X-Git-Url: https://git.adam-barratt.org.uk/?a=blobdiff_plain;f=dsa-nagios-checks%2Fchecks%2Fdsa-check-packages;h=901c885ca05eb2b213b3953e5d0061c8893d32bb;hb=ba41213d86fa3d26a0ee0505bb7d72dcfe3d6559;hp=29e7e4d5ac650a0fbec9ac09a4d1535d21a02e94;hpb=42e99da9d896a33803e763c746e9a103183b6b34;p=mirror%2Fdsa-nagios.git diff --git a/dsa-nagios-checks/checks/dsa-check-packages b/dsa-nagios-checks/checks/dsa-check-packages index 29e7e4d..901c885 100755 --- a/dsa-nagios-checks/checks/dsa-check-packages +++ b/dsa-nagios-checks/checks/dsa-check-packages @@ -38,6 +38,7 @@ use warnings; use English; my $IGNORE = "/etc/nagios/obsolete-packages-ignore"; +my $IGNORED = "/etc/nagios/obsolete-packages-ignore.d"; my %CODE = ( 'OK' => 0, @@ -132,16 +133,33 @@ sub get_packages { } sub load_ignores { - my ($ignorefile, $require_file) = @_; + my ($ignorefiles, $require_file) = @_; my @ignores; - if (!$require_file and ! -e $ignorefile) { - return \@ignores; - } - open (F, "< $ignorefile") or die ("Cannot open $ignorefile: $!\n"); - @ignores = ; - close F; + for my $ignoreitem (@$ignorefiles) { + next if (!$require_file and ! -e $ignoreitem); + + my @filestoopen; + if (-d $ignoreitem) { + opendir(DIR, $ignoreitem) or die ("Cannot open dir $ignoreitem: $!\n"); + @filestoopen = readdir(DIR); + closedir(DIR); + + @filestoopen = grep { -f ($ignoreitem.'/'.$_) } @filestoopen; + @filestoopen = grep { /^([a-z0-9_.-]+)+[a-z0-9]+$/i } @filestoopen; + @filestoopen = grep { !/dpkg-(old|dist|new|tmp)$/ } @filestoopen; + @filestoopen = map { ($ignoreitem.'/'.$_) } @filestoopen; + } else { + push @filestoopen, $ignoreitem; + } + + for my $f (@filestoopen) { + open (F, "< $f") or die ("Cannot open $f: $!\n"); + push @ignores, ; + close F; + } + } chomp(@ignores); return \@ignores; } @@ -182,21 +200,20 @@ sub filter_ignored { sub usage { my ($fd, $exit) = @_; - print $fd "Usage: $PROGRAM_NAME []\n"; + print $fd "Usage: $PROGRAM_NAME [ [ ...]]\n"; exit $exit; } -my $ignorefile = $IGNORE; +my $ignorefiles = [$IGNORE, $IGNORED]; my $ignorefile_userset = 0; -usage(\*STDERR, 1) if (@ARGV > 1); -if (@ARGV == 1) { +if (@ARGV >= 1) { usage(\*STDOUT, 0) if ($ARGV[0] eq "-h"); usage(\*STDOUT, 0) if ($ARGV[0] eq "--help"); - $ignorefile = $ARGV[0]; $ignorefile_userset = 1; + $ignorefiles = \@ARGV; }; -my $ignores = load_ignores($ignorefile, $ignorefile_userset); +my $ignores = load_ignores($ignorefiles, $ignorefile_userset); my $packages = get_packages(); filter_ignored($packages, $ignores); @@ -207,7 +224,7 @@ my @reportform = ( { 'key' => 'obsolete', 'listpackages' => 1, 'long' => "%d local or obsolete packages: %s", - 'short' => "%d obs", + 'short' => "%d obs/loc", 'status' => 'WARNING' }, { 'key' => 'outofdate', 'listpackages' => 1, @@ -222,7 +239,7 @@ my @reportform = ( { 'key' => 'obsolete-ignored', 'listpackages' => 1, 'long' => "%d whitelisted local or obsolete packages: %s", - 'short' => "%d obs(ignored)", + 'short' => "%d obs/loc(ignored)", 'status' => 'OK' }, { 'key' => 'rc', 'listpackages' => 1,