X-Git-Url: https://git.adam-barratt.org.uk/?a=blobdiff_plain;f=dsa-nagios-nrpe-config%2Fdsa-check-packages;h=b5615e43906a4c39e223017a61f1c6e923340777;hb=f8a07ee22a749cd23a0ae76447400d10f3d6c36f;hp=d3073b197defd2207bff3486dab21d81a54b02aa;hpb=9e2c79f456e2fdb1dd359999ec6b268bef79ce47;p=mirror%2Fdsa-nagios.git diff --git a/dsa-nagios-nrpe-config/dsa-check-packages b/dsa-nagios-nrpe-config/dsa-check-packages index d3073b1..b5615e4 100755 --- a/dsa-nagios-nrpe-config/dsa-check-packages +++ b/dsa-nagios-nrpe-config/dsa-check-packages @@ -77,10 +77,14 @@ sub get_packages { my $installed = $pkgs{'ii'}; delete $pkgs{'ii'}; + open my $olderr, ">&STDERR" or die "Can't dup STDERR: $!"; + open STDERR, ">/dev/null" or die "Can't dup STDOUT: $!"; + open (F, "apt-cache policy ".(join(" ", keys(%$installed)))." |") or die ("Cannot run apt-cache policy: $!\n"); @lines = ; close(F); chomp(@lines); + open STDERR, ">&", $olderr or die "Can't dup OLDERR: $!"; my $line; my $pkgname = undef; @@ -105,6 +109,11 @@ sub get_packages { for my $pkgname (keys %$installed) { my $pkg = $installed->{$pkgname}; + unless (defined($pkg->{'candidate'})) { + $obsolete{$pkgname} = $pkg; + next; + } + if ($pkg->{'candidate'} ne $pkg->{'installed'}) { $outofdate{$pkgname} = $pkg; next; @@ -141,7 +150,8 @@ sub check_ignore { my ($pkg, $ignores) = @_; my $ignore_this = 0; - for my $ig (@$ignores) { + for my $ignore (@$ignores) { + my $ig = $ignore; return 1 if ($ig eq $pkg); if (substr($ig,0,1) eq '/') { substr($ig, 0, 1, ''); @@ -204,16 +214,16 @@ my @reportform = ( 'long' => "%d out of date packages: %s", 'short' => "%d updates", 'status' => 'WARNING' }, - { 'key' => 'obsolete-ignored', - 'listpackages' => 1, - 'long' => "%d local or obsolete packages (ignored): %s", - 'short' => "%d obs(ign)", - 'status' => 'OK' }, { 'key' => 'current', 'listpackages' => 0, 'long' => "%d packages current.", 'short' => "%d ok", 'status' => 'OK' }, + { 'key' => 'obsolete-ignored', + 'listpackages' => 1, + 'long' => "%d whitelisted local or obsolete packages: %s", + 'short' => "%d obs(ignored)", + 'status' => 'OK' }, { 'key' => 'rc', 'listpackages' => 1, 'long' => "%d packages removed but not purged: %s",