From: Peter Palfrader Date: Sun, 14 Jun 2009 10:00:02 +0000 (+0200) Subject: dsa-check-packages: Support ignore directories. X-Git-Url: https://wiki.adam-barratt.org.uk/gitweb/?a=commitdiff_plain;h=e3c60c2a9c75d749407cae4033eb3cdf7d295e3c;p=mirror%2Fdsa-nagios.git dsa-check-packages: Support ignore directories. --- diff --git a/dsa-nagios-checks/checks/dsa-check-packages b/dsa-nagios-checks/checks/dsa-check-packages index 29e7e4d..61050f4 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); diff --git a/dsa-nagios-checks/debian/changelog b/dsa-nagios-checks/debian/changelog index 2f5ab38..b554d74 100644 --- a/dsa-nagios-checks/debian/changelog +++ b/dsa-nagios-checks/debian/changelog @@ -1,3 +1,9 @@ +dsa-nagios-checks (75) stable; urgency=low + + * dsa-check-packages: Support ignore directories. + + -- Peter Palfrader Sun, 14 Jun 2009 11:59:23 +0200 + dsa-nagios-checks (74) stable; urgency=low * -e is sufficient