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