[project @ peter@palfrader.org-20090309222939-d2ca9xtvbm0ojbut]
[mirror/dsa-nagios.git] / dsa-nagios-nrpe-config / dsa-check-packages
index d3073b1..b5615e4 100755 (executable)
@@ -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 = <F>;
        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",