diff options
author | Petter Reinholdtsen <pere@hungry.com> | 2008-07-25 16:55:19 +0000 |
---|---|---|
committer | Petter Reinholdtsen <pere@hungry.com> | 2008-07-25 16:55:19 +0000 |
commit | 46c7af2ac216bfce7c55347ee2ecea3d391abfa7 (patch) | |
tree | 1c8aaa47c18b94aca3e85de4042f73588f7c3745 /hardware-models | |
parent | d723b5e7158455a0628df8c6f19ec098f02447cd (diff) | |
download | sitesummary-46c7af2ac216bfce7c55347ee2ecea3d391abfa7.tar.gz sitesummary-46c7af2ac216bfce7c55347ee2ecea3d391abfa7.tar.bz2 sitesummary-46c7af2ac216bfce7c55347ee2ecea3d391abfa7.tar.xz |
* Add new statistics script hardware-models to list the different
hardware vendor and models.
Diffstat (limited to 'hardware-models')
-rwxr-xr-x | hardware-models | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/hardware-models b/hardware-models new file mode 100755 index 0000000..3cb857d --- /dev/null +++ b/hardware-models @@ -0,0 +1,78 @@ +#!/usr/bin/perl + +use strict; +use warnings; + +use SiteSummary; +use Getopt::Std; + +my %vendors; +my %models; +my %hostmap; +my %modelmap; +my %opts; + +sub usage { + my $retval = shift; + print <<EOF; +Usage: $0 [-l] + -l list hosts with the given vendor/model +EOF + exit $retval; +} + +getopt("l", \%opts) || usage(1); + +for_all_hosts(\&handle_host); + +print_summary(); + +sub handle_host { + my $hostid = shift; + #print "$hostid\n"; + my ($vendor, $model, undef) = get_hardware_info($hostid); + $vendor = "[unknown]" unless defined $vendor; + $vendors{$vendor}++; + if ($model) { + $models{$vendor}{$model}++; + if (exists $modelmap{$vendor} && exists $modelmap{$vendor}{$model}) { + push @{$modelmap{$vendor}{$model}}, $hostid ; + } else { + $modelmap{$vendor}{$model} = [$hostid]; + } + } else { + if (exists $hostmap{$vendor}) { + push @{$hostmap{$vendor}}, $hostid ; + } else { + $hostmap{$vendor} = [$hostid]; + } + } +} + +sub print_summary { + printf(" %-25s %5s\n", "vendor", "count"); + for my $vendor (sort keys %vendors) { + printf(" %-25s %5d\n", $vendor, $vendors{$vendor}); + if (exists $opts{l}) { + if (exists $hostmap{$vendor}) { + for my $hostid (sort @{$hostmap{$vendor}}) { + my $hostname = get_hostname($hostid); + my ($vendor, $model, undef) = get_hardware_info($hostid); + $vendor = "[unknown]" unless defined $vendor; + $model = "" unless defined $model; + printf " %s %s/%s %s\n", $hostname, $vendor, $model, $hostid; + } + } + for my $model (sort keys %{$models{$vendor}}) { + printf(" %-23s %5d\n", $model, $models{$vendor}{$model}); + if (exists $opts{l}) { + for my $hostid (sort @{$modelmap{$vendor}{$model}}) { + my $hostname = get_hostname($hostid); + my ($vendor, $model, undef) = get_hardware_info($hostid); + printf " %s %s/%s %s\n", $hostname, $vendor, $model, $hostid; + } + } + } + } + } +} |