#!/usr/bin/perl use strict; use warnings; use SiteSummary; use Getopt::Long; my %pkgvers; my $listhosts; sub usage { my $retval = shift; print < [-l] -l list hosts using the given kernel versions EOF exit $retval; } GetOptions("l", \$listhosts) || usage(1); my $pkg = $ARGV[0]; unless ($pkg) { print <) { chomp; next unless (/^ii\s.+$/); my @f = (split(/\s+/, $_)); if ( ($f[1] =~ m/^(.+):.+$/ && $pkg eq $1) || ($pkg eq $f[1]) ) { $pver = $f[2]; } } close(FILE); return $pver; } else { return undef; } } sub handle_host { my $hostid = shift; #print "$hostid\n"; for my $pver (get_pkg_ver($pkg, $hostid)) { $pver = "" unless defined $pver; if (exists $pkgvers{$pver}) { push @{$pkgvers{$pver}}, $hostid ; } else { $pkgvers{$pver} = [$hostid]; } } } sub print_summary { printf(" %-20s %5s\n", "$pkg version", "count"); for my $pver (sort keys %pkgvers) { printf(" %-20s %5d\n", $pver, scalar @{$pkgvers{$pver}}); if ($listhosts) { for my $hostid (sort @{$pkgvers{$pver}}) { my $hostname = get_hostname($hostid); my $site = get_site($hostid) || ""; my $sitegroup = get_sitegroup($hostid) || ""; printf " %s %s/%s %s\n", $hostname, $site, $sitegroup, $hostid; } } } }