#!/bin/sh # # inventory.sh # # Originally written by Ben Lindstrom, modified by Darren Tucker to use perl # This file is placed into the public domain. # # This will produce an AIX package inventory file, which looks like: # # /usr/local/bin: # class=apply,inventory,openssh # owner=root # group=system # mode=755 # type=DIRECTORY # /usr/local/bin/slogin: # class=apply,inventory,openssh # owner=root # group=system # mode=777 # type=SYMLINK # target=ssh # /usr/local/share/Ssh.bin: # class=apply,inventory,openssh # owner=root # group=system # mode=644 # type=FILE # size=VOLATILE # checksum=VOLATILE find . ! -name . -print | perl -ne '{ chomp; if ( -l $_ ) { ($dev,$ino,$mod,$nl,$uid,$gid,$rdev,$sz,$at,$mt,$ct,$bsz,$blk)=lstat; } else { ($dev,$ino,$mod,$nl,$uid,$gid,$rdev,$sz,$at,$mt,$ct,$bsz,$blk)=stat; } # Start to display inventory information $name = $_; $name =~ s|^.||; # Strip leading dot from path print "$name:\n"; print "\tclass=apply,inventory,openssh\n"; print "\towner=root\n"; print "\tgroup=system\n"; printf "\tmode=%lo\n", $mod & 07777; # Mask perm bits if ( -l $_ ) { # Entry is SymLink print "\ttype=SYMLINK\n"; printf "\ttarget=%s\n", readlink($_); } elsif ( -f $_ ) { # Entry is File print "\ttype=FILE\n"; print "\tsize=$sz\n"; print "\tchecksum=VOLATILE\n"; } elsif ( -d $_ ) { # Entry is Directory print "\ttype=DIRECTORY\n"; } }'