remove source-dist branch
This commit is contained in:
commit
111b23b7b4
401 changed files with 127418 additions and 0 deletions
166
contrib/checkciscotemp.pl
Normal file
166
contrib/checkciscotemp.pl
Normal file
|
|
@ -0,0 +1,166 @@
|
|||
#!/usr/bin/perl -wT
|
||||
# check_ciscotemp.pl
|
||||
#
|
||||
# Copyright (C) 2000 Leland E. Vandervort <leland@mmania.com>
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the GNU General Public License
|
||||
# as published by the Free Software Foundation; either version 2
|
||||
# of the License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty
|
||||
# of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# you should have received a copy of the GNU General Public License
|
||||
# along with this program (or with Nagios); if not, write to the
|
||||
# Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||
# Boston, MA 02111-1307, USA
|
||||
####################################
|
||||
# Nagios pluging to check inlet and outlet temperatures on
|
||||
# Cisco router platforms which support environmental monitoring
|
||||
# (7200, 7500, GSR12000...)
|
||||
####################################
|
||||
# default temperature thresholds are 30C for inlet, 40C outlet.
|
||||
# if input or output is less than thresholds, returns OK
|
||||
# if equal to (the temps don't change that rapidly) returns WARNING
|
||||
# if greater than threshold, returns CRITICAL
|
||||
# if undetermined, or cannot access environmental, returns UNKNOWN
|
||||
# (in accordance with the plugin coding guidelines)
|
||||
####################################
|
||||
|
||||
use Net::SNMP;
|
||||
use Getopt::Long;
|
||||
&Getopt::Long::config('auto_abbrev');
|
||||
|
||||
my $status;
|
||||
my $response = "";
|
||||
my $timeout = 10;
|
||||
my $community = "public";
|
||||
my $port = 161;
|
||||
my $INTAKE_TEMP = "1.3.6.1.4.1.9.9.13.1.3.1.3.1";
|
||||
my $OUTLET_TEMP = "1.3.6.1.4.1.9.9.13.1.3.1.3.3";
|
||||
my $in_temp;
|
||||
my $out_temp;
|
||||
my $inlet_thresh = 30;
|
||||
my $outlet_thresh = 40;
|
||||
|
||||
my %STATUSCODE = ( 'UNKNOWN' => '-1',
|
||||
'OK' => '0',
|
||||
'WARNING' => '1',
|
||||
'CRITICAL' => '2');
|
||||
|
||||
my $state = "UNKNOWN";
|
||||
|
||||
|
||||
$SIG{'ALRM'} = sub {
|
||||
print "ERROR: No snmp response from $hostname (sigALRM)\n";
|
||||
exit($STATUSCODE{"UNKNOWN"});
|
||||
};
|
||||
|
||||
Getopt::Long::Configure('bundling');
|
||||
$status = GetOptions
|
||||
("community=s", \$community,
|
||||
"C=s", \$community,
|
||||
"H=s", \$hostname,
|
||||
"hostname=s", \$hostname,
|
||||
"port=i", \$port,
|
||||
"timeout=i", \$timeout,
|
||||
"c=s", \$critical_vals,
|
||||
"w=s", \$warning_vals,
|
||||
"ithresh=i", \$inlet_thresh,
|
||||
"othresh=i", \$outlet_thresh);
|
||||
|
||||
if($status == 0) {
|
||||
&show_help;
|
||||
}
|
||||
|
||||
unless (defined($hostname)) {
|
||||
$hostname = shift || &show_help;
|
||||
}
|
||||
|
||||
if (defined($critical_vals)) {
|
||||
if ($critical_vals =~ m/^([0-9]+)[,:]([0-9]+)$/) {
|
||||
($inlet_thresh,$outlet_thresh) = ($1, $2);
|
||||
} else {
|
||||
die "Cannot Parse Critical Thresholds\n";
|
||||
}
|
||||
}
|
||||
|
||||
if (defined($warning_vals)) {
|
||||
if ($warning_vals =~ m/^([0-9]+)[:,]([0-9]+)$/) {
|
||||
($inlet_warn,$outlet_warn) = ($1, $2);
|
||||
} else {
|
||||
die "Cannot Parse Warning Thresholds\n";
|
||||
}
|
||||
}else{
|
||||
$inlet_warn=$inlet_thresh;
|
||||
$outlet_warn=$outlet_thresh;
|
||||
}
|
||||
|
||||
alarm($timeout);
|
||||
|
||||
$in_temp = &SNMPGET($INTAKE_TEMP);
|
||||
$out_temp = &SNMPGET($OUTLET_TEMP);
|
||||
|
||||
if (($in_temp < $inlet_thresh) && ($out_temp < $outlet_thresh)) {
|
||||
$state = "OK";
|
||||
}
|
||||
elsif (($in_temp == $inlet_thresh) || ($out_temp == $outlet_thresh)) {
|
||||
if(($in_temp > $inlet_thresh) || ($out_temp > $outlet_thresh)) {
|
||||
$state = "CRITICAL";
|
||||
}
|
||||
else {
|
||||
$state = "WARNING";
|
||||
}
|
||||
}
|
||||
elsif (($in_temp > $inlet_thresh) || ($out_temp > $outlet_thresh)) {
|
||||
$state = "CRITICAL";
|
||||
}
|
||||
else {
|
||||
$state = "WARNING";
|
||||
}
|
||||
|
||||
print "$state Inlet Temp: $in_temp Outlet Temp: $out_temp\n";
|
||||
exit($STATUSCODE{$state});
|
||||
|
||||
sub show_help {
|
||||
printf("\nPerl envmon temperature plugin for Nagios\n");
|
||||
printf("Usage:\n");
|
||||
printf("
|
||||
check_ciscotemp [options] <hostname>
|
||||
Options:
|
||||
-C snmp-community
|
||||
-p snmp-port
|
||||
-i input temperature threshold
|
||||
-o output temperature threshold
|
||||
|
||||
");
|
||||
printf("Copyright (C)2000 Leland E. Vandervort\n");
|
||||
printf("check_ciscotemp comes with absolutely NO WARRANTY either implied or explicit\n");
|
||||
printf("This program is licensed under the terms of the\n");
|
||||
printf("GNU General Public License\n(check source code for details)\n\n\n");
|
||||
exit($STATUSCODE{"UNKNOWN"});
|
||||
}
|
||||
|
||||
sub SNMPGET {
|
||||
$OID = shift;
|
||||
($session,$error) = Net::SNMP->session(
|
||||
Hostname => $hostname,
|
||||
Community => $community,
|
||||
Port => $port
|
||||
);
|
||||
if(!defined($session)) {
|
||||
printf("$state %s\n", $error);
|
||||
exit($STATUSCODE{$state});
|
||||
}
|
||||
if(!defined($response = $session->get_request($OID))) {
|
||||
printf("$state %s\n", $session->error());
|
||||
$session->close();
|
||||
exit($STATUSCODE{$state});
|
||||
}
|
||||
$session->close();
|
||||
return($response->{$OID});
|
||||
}
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue