=================================================================== RCS file: /cvs/nagios/check_hw_sensors/check_hw_sensors,v retrieving revision 1.9 retrieving revision 1.10 diff -u -r1.9 -r1.10 --- nagios/check_hw_sensors/check_hw_sensors 2006/05/03 03:26:47 1.9 +++ nagios/check_hw_sensors/check_hw_sensors 2006/05/03 04:31:22 1.10 @@ -1,5 +1,5 @@ #!/usr/bin/perl -# $RedRiver: check_hw_sensors,v 1.8 2006/05/02 21:23:29 andrew Exp $ +# $RedRiver: check_hw_sensors,v 1.9 2006/05/03 02:26:47 andrew Exp $ ######################################################################## # check_hw_sensors *** A nagios check for OpenBSD hw.sensors # @@ -14,13 +14,12 @@ use strict; use warnings; -#use Data::Dumper; +use Data::Dumper; -use constant NAGIOS_OUTPUT => 1; +use constant NAGIOS_OUTPUT => 0; use POSIX; use lib "/usr/local/libexec/nagios"; -#use lib $ENV{'HOME'}; use utils qw($TIMEOUT %ERRORS &print_revision &support); use Getopt::Long; @@ -39,8 +38,8 @@ my $sensor; my $warning; my $critical; -my $opt_h ; -my $opt_V ; +my $opt_h; +my $opt_V; my $CHECK_SENSOR = $BASE; my %CHECKS; @@ -65,7 +64,7 @@ } if ($opt_V) { - print_revision($PROGNAME,'$Revision: 1.9 $ '); + print_revision($PROGNAME,'$Revision: 1.10 $ '); exit $ERRORS{'OK'}; } @@ -75,10 +74,10 @@ } unless ( ( - defined $filename || - (defined $sensor && ($warning || $critical)) - ) && - ( (!defined $filename) || (!defined $sensor) ) + defined $filename || + (defined $sensor && ($warning || $critical)) + ) && + ( (!defined $filename) || (!defined $sensor) ) ) { print_help(); exit $ERRORS{'OK'}; @@ -140,7 +139,6 @@ push @{ $states{ $r } }, $check . '=' . $SENSORS{$check}{'output'}; } else { - # XXX Error missing sensor push @{ $states{'UNKNOWN'} }, $check . '=No sensor with this id'; } } @@ -200,38 +198,25 @@ my $type = shift; my $check = shift; - if (defined $check->{'warn'} && $check->{'warn'} =~ /:/) { - if (my ($low, $high) = split /:/, $check->{'warn'}) { - $check->{'warn.low'} = $low; - $check->{'warn.high'} = $high; + foreach my $code ('crit', 'warn') { + if (defined $check->{$code} && $check->{$code} =~ /:/) { + if (my ($low, $high) = split /:/, $check->{$code}) { + $check->{$code . '.low'} = $low; + $check->{$code . '.high'} = $high; + } + delete $check->{$code}; } - delete $check->{'warn'}; - } - if (defined $check->{'crit'} && $check->{'crit'} =~ /:/) { - if (my ($low, $high) = split /:/, $check->{'crit'}) { - $check->{'crit.low'} = $low; - $check->{'crit.high'} = $high; + + foreach my $severity ('low', 'high') { + if (defined $check->{$severity}) { + $check->{ $code . '.' . $severity } = $check->{$severity} + unless defined $check->{ $code . '.' . $severity }; + } } - delete $check->{'crit'}; + no warnings 'uninitialized'; + $check->{$code} = [ split /,\s*/, $check->{$code} ]; } - if (defined $check->{'low'}) { - $check->{'warn.low'} = $check->{'low'} - unless defined $check->{'warn.low'}; - $check->{'crit.low'} = $check->{'low'} - unless defined $check->{'crit.low'}; - } - if (defined $check->{'high'}) { - $check->{'warn.high'} = $check->{'high'} - unless defined $check->{'warn.high'}; - $check->{'crit.high'} = $check->{'high'} - unless defined $check->{'crit.high'}; - } - - no warnings 'uninitialized'; - $check->{'warn'} = [ split /,\s*/, $check->{'warn'} ]; - $check->{'crit'} = [ split /,\s*/, $check->{'crit'} ]; - return $check; } @@ -440,10 +425,10 @@ The entries 'crit' or 'warn' (or the -c or -w on the command line) may be a RANGE or a comma separated list of acceptable values. The comma separated list of values contains a list of things that will NOT cause the status. This is possibly counterintuitive, but you are more likely to know good values than bad values. -A RANGE is a low ENTRY and a high ENTRY separated by a colon (:). +A RANGE is a low ENTRY and a high ENTRY separated by a colon (:). It can also be low: or :high with the other side left blank to only make the single check.. EOL - print_revision($PROGNAME, '$Revision: 1.9 $'); + print_revision($PROGNAME, '$Revision: 1.10 $'); }