#!/tools/ns/bin/perl5.6.1 -w $patchcmd = "swlist -l bundle"; # [output sample] # Initializing... # Contacting target "linux2"... # # Target: linux2:/ # # # B6268AA B.11.00.05 Graphics and Technical Computing Software # BUNDLE B.11.00 Patch Bundle # HPUXEng64RT B.11.00.01 English HP-UX 64-bit Runtime Environment # HWE1100 B.11.00.0206.5 Hardware Enablement Patches for HP-UX 11.00, June 2002 # OnlineDiag B.11.00.21.10 HPUX 11.0 Support Tools Bundle, Jun 2002 # QPK1100 B.11.00.64.4 Quality Pack for HP-UX 11.00, March 2004 # UnlimUserLic B.11.00.02 HP-UX Unlimited-User License # XSWGR1100 B.11.00.47.08 General Release Patches, November 1999 (ACE) %month2digit = ( 'January', 1, 'February', 2, 'March', 3, 'April', 4, 'May', 5, 'June', 6, 'July', 7, 'August', 8, 'September', 9, 'October', 10, 'November', 11, 'December', 12, ); open PATCHCMD, "$patchcmd|" or die "Error: could not open $patchcmd: $!"; sleep 1; $qpk_str = ""; $month_year = ""; while () { chop; if (/^\s+(QPK.*), ([A-Za-z]* [12][0-9]*)/) { $qpk_str = $1; $month_year = $2; } } close PATCHCMD; $date = gmtime; $host = `hostname`; chop $host; $dom = `domainname`; $un = `uname -a`; print "/* This list was generated by $0 */\n"; print "/* on $host.$dom */\n"; print "/* at $date GMT */\n"; print "/* Here is the information from uname -a:\n"; print $un; if ( $qpk_str eq "" ) { print " Quality Pack is not installed on the system. */\n"; } else { ($qpkname, $version, $description) = split(/[ ]+/, $qpk_str, 3); print "$qpkname\n"; print "$version\n"; print "$description\n"; if ( $month_year eq "" ) { print " Quality pack has no date info. */\n"; print "$qpk_str <$month_year>\n"; } else { ($month, $year) = split(/\s/, $month_year, 2); $mo = $month2digit{$month}; print " The following is a Quality Pack installed on the system. */\n"; print "{\"$qpkname\", \"$version\", \"$description\", $year, $mo, 0},\n"; } }