===================================================================
RCS file: /cvs/nagios/check_hw_sensors/check_hw_sensors,v
retrieving revision 1.7
retrieving revision 1.10
diff -u -r1.7 -r1.10
--- nagios/check_hw_sensors/check_hw_sensors 2006/05/02 21:03:53 1.7
+++ 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.6 2006/05/02 19:59:47 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.7 $ ');
+ 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';
}
}
@@ -155,21 +153,14 @@
$state = $error;
}
}
-if (NAGIOS_OUTPUT && $have_results) {
- print '
';
-}
foreach my $error (sort { $ERRORS{$b} <=> $ERRORS{$a} } keys %ERRORS) {
if (exists $states{$error}) {
if (NAGIOS_OUTPUT) {
- print "- $error (" . scalar(@{ $states{ $error } }) . ")";
+ print "$error (" . scalar(@{ $states{ $error } }) . ")";
unless ($error eq 'OK') {
- print '
';
- foreach (@{ $states{ $error } }) {
- print "- $_
";
- }
- print '
';
+ print '
';
+ print map { " - $_
" } @{ $states{ $error } };
}
- print " "
} else {
print "$error (" . scalar(@{ $states{ $error } }) . "):\n";
foreach (@{ $states{ $error } }) {
@@ -181,9 +172,6 @@
if ($have_results == 0) {
print "No results found\n";
}
-if (NAGIOS_OUTPUT && $have_results) {
- print '
' . "\n";
-}
exit $ERRORS{$state};
@@ -210,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;
}
@@ -303,7 +278,7 @@
$result = $errors{$code}
if ($c <= $data);
}
- } elsif (defined $check->{$code}) {
+ } elsif (@{ $check->{$code} }) {
my $matched = 0;
foreach my $c (@{ $check->{$code} }) {
$c =~ s/[^\d\.]//g;
@@ -371,7 +346,7 @@
$result = $errors{$code}
if ($c <= $data);
}
- } elsif (defined $check->{$code}) {
+ } elsif (@{ $check->{$code} }) {
my $matched = 0;
foreach my $c (@{ $check->{$code} }) {
@@ -403,7 +378,7 @@
$sensor->{'type'} eq 'drive' ||
$sensor->{'type'} eq 'indicator'
) {
- if (defined $check->{$code}) {
+ if (@{ $check->{$code} }) {
my $matched = 0;
foreach (@{ $check->{$code} }) {
if ($_ eq $sensor->{'data'}) {
@@ -450,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.7 $');
+ print_revision($PROGNAME, '$Revision: 1.10 $');
}