diff options
Diffstat (limited to 'kernelversion-summary')
| -rwxr-xr-x | kernelversion-summary | 31 | 
1 files changed, 28 insertions, 3 deletions
diff --git a/kernelversion-summary b/kernelversion-summary index 0298004..a80b936 100755 --- a/kernelversion-summary +++ b/kernelversion-summary @@ -4,8 +4,21 @@ use strict;  use warnings;  use SiteSummary; +use Getopt::Std;  my %kernelvers; +my %opts; + +sub usage { +    my $retval = shift; +    print <<EOF; +Usage: $0 [-l] +   -l   list hosts using the given kernel versions +EOF +    exit $retval; +} + +getopt("l", \%opts) || usage(1);  for_all_hosts(\&handle_host); @@ -15,14 +28,26 @@ sub handle_host {      my $hostid = shift;      #print "$hostid\n";      for my $kver (get_linux_kernel_ver($hostid)) { -	$kver = "" unless defined $kver; -	$kernelvers{$kver}++; +        $kver = "" unless defined $kver; +        if (exists $kernelvers{$kver}) { +            push @{$kernelvers{$kver}}, $hostid ; +        } else { +            $kernelvers{$kver} = [$hostid]; +        }      }  }  sub print_summary {      printf("  %-20s %5s\n", "kernel", "count");      for my $kver (sort keys %kernelvers) { -	printf("  %-20s %5d\n", $kver, $kernelvers{$kver}); +        printf("  %-20s %5d\n", $kver,  scalar @{$kernelvers{$kver}}); +        if (exists $opts{l}) { +            for my $hostid (@{$kernelvers{$kver}}) { +                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; +            } +        }      }  }  | 
