version 1.36, 2009/11/10 23:26:13 |
version 1.40, 2009/11/11 18:14:40 |
|
|
#!/usr/bin/perl -T |
#!/usr/bin/perl -T |
# $RedRiver: check_hw_sensors,v 1.35 2009/11/10 23:15:15 andrew Exp $ |
# $RedRiver: check_hw_sensors,v 1.39 2009/11/11 18:14:00 andrew Exp $ |
######################################################################## |
######################################################################## |
# check_hw_sensors *** A nagios check for OpenBSD sysctl hw.sensors |
# check_hw_sensors *** A nagios check for OpenBSD sysctl hw.sensors |
# |
# |
|
|
|
|
use POSIX; |
use POSIX; |
use Config; |
use Config; |
use lib '/usr/local/libexec/nagios'; |
my $PREFIX; |
|
|
|
BEGIN { |
|
## no critic 'warnings' |
|
no warnings 'uninitialized'; |
|
$PREFIX = "${PREFIX}" || '/usr/local'; # Magic for OpenBSD ports tree |
|
} |
|
use lib $PREFIX . '/libexec/nagios'; |
use utils qw($TIMEOUT %ERRORS &support); |
use utils qw($TIMEOUT %ERRORS &support); |
|
|
use Getopt::Long; |
use Getopt::Long; |
|
|
} |
} |
$CHECK_SENSOR = $SENSOR; |
$CHECK_SENSOR = $SENSOR; |
|
|
$CHECKS{$SENSOR}{'warn'} = $WARNING; |
$CHECKS{$SENSOR}{'warn'} = $WARNING if $WARNING; |
$CHECKS{$SENSOR}{'crit'} = $CRITICAL; |
$CHECKS{$SENSOR}{'crit'} = $CRITICAL if $CRITICAL; |
|
|
} |
} |
elsif ( defined $FILENAME ) { |
elsif ( defined $FILENAME ) { |
%CHECKS = read_file($FILENAME); |
%CHECKS = read_file($FILENAME); |
|
|
|
|
my $have_results = 0; |
my $have_results = 0; |
$state = 'OK'; |
$state = 'OK'; |
foreach my $error ( reverse sort { $ERRORS{$a} <=> $ERRORS{$b} } keys %ERRORS ) { |
foreach |
|
my $error ( reverse sort { $ERRORS{$a} <=> $ERRORS{$b} } keys %ERRORS ) |
|
{ |
if ( exists $STATES{$error} ) { |
if ( exists $STATES{$error} ) { |
$have_results++; |
$have_results++; |
$state = $error if $ERRORS{$state} < $ERRORS{$error}; |
$state = $error if $ERRORS{$state} < $ERRORS{$error}; |
|
|
if ($NAGIOS_OUTPUT) { |
if ($NAGIOS_OUTPUT) { |
print $error . ' (' . scalar( @{ $STATES{$error} } ) . ')'; |
print $error . ' (' . scalar( @{ $STATES{$error} } ) . ')'; |
if ( $error ne 'OK' ) { |
if ( $error ne 'OK' ) { |
s/\s+/ /gxms; |
|
print '<br>'; |
print '<br>'; |
print map {" - $_<br>"} @{ $STATES{$error} }; |
print map {" - $_<br>"} @{ $STATES{$error} }; |
} |
} |
|
|
$r = check_sensor( $sensor, $C->{ $sensor->{id} } ); |
$r = check_sensor( $sensor, $C->{ $sensor->{id} } ); |
$data = $sensor->{id} . '=' . $sensor->{output}; |
$data = $sensor->{id} . '=' . $sensor->{output}; |
} |
} |
elsif ( !$O->{ignore_status} && $sensor->{status} ) { |
elsif ( $sensor->{status} && !$O->{IGNORE_STATUS} ) { |
$r = check_sensor( $sensor, { STATUS => 1 } ); |
$r = check_sensor( $sensor, { STATUS => 1 } ); |
$data = $sensor->{id} . '=' . $sensor->{output}; |
$data = $sensor->{id} . '=' . $sensor->{output}; |
} |
} |