=================================================================== RCS file: /cvs/nagios/check_pf_limits/check_pf_limits,v retrieving revision 1.1 retrieving revision 1.4 diff -u -r1.1 -r1.4 --- nagios/check_pf_limits/check_pf_limits 2010/01/14 22:21:34 1.1 +++ nagios/check_pf_limits/check_pf_limits 2010/01/14 22:57:15 1.4 @@ -1,5 +1,5 @@ #!/usr/bin/perl -T -# $AFresh1$ +# $AFresh1: check_pf_limits,v 1.3 2010/01/14 22:42:12 andrew Exp $ ######################################################################## # check_openbgpd *** A nagios check for OpenBSD bgpd # @@ -29,7 +29,7 @@ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. EOL -our ($VERSION) = '$Revision: 1.1 $' =~ m{ \$Revision: \s+ (\S+) }xms; +our ($VERSION) = '$Revision: 1.4 $' =~ m{ \$Revision: \s+ (\S+) }xms; my $PROGNAME = 'check_pf_limits'; my $PFCTL = '/sbin/pfctl'; @@ -178,7 +178,7 @@ rate => $rate, }; } - default { return } + default {return} } return 1; @@ -250,6 +250,15 @@ ); my %states; + my $status = $S->{info}{Status}; + if (0 == index $status, 'Enabled') { + push @{ $states{OK} }, $status; + } + else { + push @{ $states{CRITICAL} }, $status; + } + + my %matched; STATE: foreach my $k ( keys %known_limits ) { $matched{$k} = 1; @@ -273,6 +282,7 @@ } foreach my $k ( keys %{$C} ) { + next if 0 == index $k, '_'; if ( !exists $matched{$k} ) { push @{ $states{CRITICAL} }, '[' . $k . '] Unsupported Limit'; } @@ -342,13 +352,12 @@ sub getopt { my (@argv) = @_; - my %checks; + my ( %checks, $w, $c ); while (@argv) { my $opt = shift @argv; given ($opt) { - state( $w, $c ); when ( '-V' || '--version' ) { - print_revision( $PROGNAME, '$Revision: 1.1 $ ' ); + print_revision( $PROGNAME, '$Revision: 1.4 $ ' ); exit $ERRORS{'OK'} } when (/^-?-h(?:elp)?/xms) { print_help(); exit $ERRORS{'OK'} } @@ -359,12 +368,6 @@ when (/^-?-c(?:ritical)?/xms) { $c = parse_check( shift @argv ) } - when (/^-?-u(?:nknown)?/xms) { - $checks{_UNKNOWN} = { - WARNING => $w, - CRITICAL => $c, - } - } when (/^-?-l(?:limit)?/xms) { while ( @argv && $argv[0] !~ /^-/xms ) { $checks{ shift @argv } = { @@ -376,6 +379,14 @@ default { print_help(); exit $ERRORS{'UNKNOWN'} } } } + + if (defined $w) { + $checks{_UNKNOWN}{WARNING} = $w; + } + if (defined $c) { + $checks{_UNKNOWN}{CRITICAL} = $c; + }; + return %checks; } @@ -416,6 +427,8 @@ Any known limits that are unspecified are checked with the last specified warning and criticical ENTRY. +Also checks if pf is enabled and is CRITICAL if not. + Example: $PROGNAME -c :90% -l src-nodes -w 10:75% -l states @@ -428,7 +441,7 @@ EOL - print_revision( $PROGNAME, '$Revision: 1.1 $' ); + print_revision( $PROGNAME, '$Revision: 1.4 $' ); print $LICENSE;