1#!/bin/sh
2#
3# inventory.sh
4#
5# Originally written by Ben Lindstrom, modified by Darren Tucker to use perl
6# This file is placed into the public domain.
7#
8# This will produce an AIX package inventory file, which looks like:
9#
10# /usr/local/bin:
11#          class=apply,inventory,openssh
12#          owner=root
13#          group=system
14#          mode=755
15#          type=DIRECTORY
16# /usr/local/bin/slogin:
17#          class=apply,inventory,openssh
18#          owner=root
19#          group=system
20#          mode=777
21#          type=SYMLINK
22#          target=ssh
23# /usr/local/share/Ssh.bin:
24#          class=apply,inventory,openssh
25#          owner=root
26#          group=system
27#          mode=644
28#          type=FILE
29#          size=VOLATILE
30#          checksum=VOLATILE
31
32find . ! -name . -print | perl -ne '{
33	chomp;
34	if ( -l $_ ) {
35		($dev,$ino,$mod,$nl,$uid,$gid,$rdev,$sz,$at,$mt,$ct,$bsz,$blk)=lstat;
36	} else {
37		($dev,$ino,$mod,$nl,$uid,$gid,$rdev,$sz,$at,$mt,$ct,$bsz,$blk)=stat;
38	}
39
40	# Start to display inventory information
41	$name = $_;
42	$name =~ s|^.||;	# Strip leading dot from path
43	print "$name:\n";
44	print "\tclass=apply,inventory,openssh\n";
45	print "\towner=root\n";
46	print "\tgroup=system\n";
47	printf "\tmode=%lo\n", $mod & 07777;	# Mask perm bits
48	
49	if ( -l $_ ) {
50		# Entry is SymLink
51		print "\ttype=SYMLINK\n";
52		printf "\ttarget=%s\n", readlink($_);
53	} elsif ( -f $_ ) {
54		# Entry is File
55		print "\ttype=FILE\n";
56		print "\tsize=$sz\n";
57		print "\tchecksum=VOLATILE\n";
58	} elsif ( -d $_ ) {
59		# Entry is Directory
60		print "\ttype=DIRECTORY\n";
61	}
62}'
63