X-Git-Url: https://git.adam-barratt.org.uk/?a=blobdiff_plain;f=dsa-nagios-checks%2Fchecks%2Fdsa-check-packages;h=107b94bdc53509a461e72ae0292b305003fa13b9;hb=29c5006c425552236653bbd0e1f1887a52f4e7b6;hp=61050f41bd2e3a91b50f69983a2a47bf20306ad7;hpb=e3c60c2a9c75d749407cae4033eb3cdf7d295e3c;p=mirror%2Fdsa-nagios.git diff --git a/dsa-nagios-checks/checks/dsa-check-packages b/dsa-nagios-checks/checks/dsa-check-packages index 61050f4..107b94b 100755 --- a/dsa-nagios-checks/checks/dsa-check-packages +++ b/dsa-nagios-checks/checks/dsa-check-packages @@ -61,7 +61,13 @@ sub record($) { sub get_packages { $ENV{'COLUMNS'} = 1000; $ENV{'LC_ALL'} = 'C'; - open(F, "dpkg -l|") or die ("Cannot run dpkg: $!\n"); + open(F, "dpkg --print-architecture|") or die ("Cannot run dpkg --print-architecture: $!\n"); + my $arch = ; + chomp($arch); + close(F); + + + open(F, "dpkg -l|") or die ("Cannot run dpkg -l: $!\n"); my @lines = ; close(F); chomp(@lines); @@ -72,6 +78,7 @@ sub get_packages { my %pkgs; for my $line (@lines) { my ($state, $pkg, $version, undef) = split(/ */, $line); + $pkg =~ s/\Q:$arch\E$//; $pkgs{$state}{$pkg} = { 'installed' => $version } } @@ -224,46 +231,55 @@ my @reportform = ( { 'key' => 'obsolete', 'listpackages' => 1, 'long' => "%d local or obsolete packages: %s", - 'short' => "%d obs", + 'short' => "%d obs/loc", + 'perf' => "obs_loc=%d;1;5;0", 'status' => 'WARNING' }, { 'key' => 'outofdate', 'listpackages' => 1, 'long' => "%d out of date packages: %s", 'short' => "%d updates", + 'perf' => "outdated=%d;1;5;0", 'status' => 'WARNING' }, { 'key' => 'current', 'listpackages' => 0, 'long' => "%d packages current.", 'short' => "%d ok", + 'perf' => "current=%d;;;0", 'status' => 'OK' }, { 'key' => 'obsolete-ignored', 'listpackages' => 1, 'long' => "%d whitelisted local or obsolete packages: %s", - 'short' => "%d obs(ignored)", + 'short' => "%d obs/loc(ignored)", + 'perf' => "obs_ign=%d;;;0", 'status' => 'OK' }, { 'key' => 'rc', 'listpackages' => 1, 'long' => "%d packages removed but not purged: %s", 'short' => "%d rc", + 'perf' => "rm_unprg=%d;;;0", 'status' => 'OK' }, { 'key' => 'hi', 'listpackages' => 1, 'long' => "%d packages on hold: %s", 'short' => "%d hi", + 'perf' => "hold=%d;;;0", 'status' => 'OK' }, { 'key' => 'pc', 'listpackages' => 1, 'long' => "%d packages requested to be purged but conffiles still installed: %s", 'short' => "%d pc", + 'perf' => "prg_conf=%d;1;;0", 'status' => 'WARNING' }, ); my @longout; +my @perfout; my @shortout; for my $form (@reportform) { my $pkgs = $packages->{$form->{'key'}}; delete $packages->{$form->{'key'}}; my $num = scalar keys %$pkgs; + push @perfout, sprintf($form->{'perf'}, $num); next unless ($num > 0); if ($form->{'listpackages'}) { my $list = join(", ", keys %$pkgs); @@ -286,8 +302,10 @@ if (scalar keys %$packages) { my $shortout = $EXITCODE.": ".join(", ", @shortout); my $longout = join("\n", @longout); +my $perfout = "|".join(" ", @perfout); -print $shortout,"\n"; +print $shortout; print $longout,"\n"; +print $perfout,"\n"; exit $CODE{$EXITCODE};