1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133
|
#!/usr/bin/perl
#
#
# check_most.pl -i <ip address> -p <port> -c community -o <oid> [warn] [critical]
#
# NetSaint host script to get the disk usage from NT snmp
#
# Changes and Modifications
# =========================
# 3-Aug-2000 - Xavier Dusart
# Created
# 2003 - Rainer Duffner
BEGIN {
if ($0 =~ m/^(.*?)[\/\\]([^\/\\]+)$/) {
$runtimedir = $1;
$PROGNAME = $2;
}
}
require 5.004;
use POSIX;
#use strict;
use Getopt::Std ;
use BER;
require 'SNMP_Session.pm';
use vars qw($opt_H $opt_p $opt_C $opt_f $opt_h $PROGNAME);
use lib $main::runtimedir;
use utils qw($TIMEOUT %ERRORS &print_revision &usage &support);
use snmputil qw(%CPQ_LOCALE %CPQ_FAN_PRESENT %CPQ_FAN_OVERALL_COND %CPQ_FAN_SPEED);
delete @ENV{qw(IFS CDPATH ENV BASH_ENV)}; # Make %ENV safer
getopts('H:p:C:f:hV') ;
my $ip_address=undef ;
if ($opt_h) {&help();}
if ($opt_H =~ m/^([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+|[a-zA-Z][-a-zA-Z0-9]*(\.[a-zA-Z][-a-zA
-Z0-9]*)*)$/) {
$ip_address = $opt_H ;
}
else {
usage();
print "IP-Address format wrong\n";
exit $ERRORS{'UNKNOWN'};
}
#if ($opt_p =~ m/^[0-9]
my $port = $opt_p;
my $community = $opt_C;
my $fan = $opt_f ;
#my $err_counter=0 ;
#my $err_status="";
my $fan_locale_oid = encode_oid (1,3,6,1,4,1,232,6,2,6,7,1,3,0,$fan );
# not used for the moment - gives no usable output
# if reused, enter at end of list to avoid renumbering !
my $fan_present_oid = encode_oid (1,3,6,1,4,1,232,6,2,6,7,1,4,0,$fan );
my $fan_speed_oid = encode_oid (1,3,6,1,4,1,232,6,2,6,7,1,6,0,$fan );
my $fan_condition_oid = encode_oid (1,3,6,1,4,1,232,6,2,6,7,1,9,0,$fan );
my $count=1 ;
my $label ;
my @r_array=();
my $q ;
my $diff ;
$warning=$warning/100 ;
$crititcal=$critical/100 ;
# get temperature, temperature_threshold bfore shutdown
my $session=SNMP_Session->open ($ip_address, $community, $port) || die "couldn't open SNMP-session to host" ;
if ($session->get_request_response ($fan_present_oid, $fan_locale_oid, $fan_speed_oid, $fan_condition_oid )) {
(my $bindings) = $session->decode_get_response ($session->{pdu_buffer});
while ($bindings ne '') {
($binding, $bindings) = &decode_sequence ($bindings) ;
($oid,$value) = &decode_by_template ($binding,"%O%@");
$r_array[$count]=&pretty_print($value);
$count++;
}
} else {
print "No response from agent\n";
exit $ERRORS{'CRITICAL'};
}
$result_fan_present= $r_array[1];
$result_fan_locale= $r_array[2];
$result_fan_speed= $r_array[3];
$result_fan_condition=$r_array[4];
if ( $result_fan_present != 3 || $result_fan_speed !=2 ) {
print "Fan ". $fan . " ".$CPQ_LOCALE{$result_fan_locale}. " (".$result_fan_locale.") - Critical: Fan ".$CPQ_FAN_PRESENT{$result_fan_present}.". Speed: ". $CPQ_FAN_SPEED{$result_fan_speed}.". Overall condition: ". $CPQ_FAN_OVERALL_COND{$result_fan_condition} ."\n" ;
exit $ERRORS{'CRITICAL'} ;
}
else {
print "Fan " .$fan . " ".$CPQ_LOCALE{$result_fan_locale}. " (".$result_fan_locale.") - OK: Fan ".$CPQ_FAN_PRESENT{$result_fan_present}.". Speed: ". $CPQ_FAN_SPEED{$result_fan_speed}.". Overall condition: ". $CPQ_FAN_OVERALL_COND{$result_fan_condition} ."\n" ;
exit $ERRORS{'OK'} ;
}
sub print_usage () {
print "Usage: $PROGNAME -H <host> -p <port> -C <community> -f <fannumber>\n";
}
sub print_help () {
print_revision($PROGNAME,'$Revision: 1.1 $\n ');
print "Copyright (c) 2003 Rainer Duffner\n ";
print_usage();
print "\n";
print "<host> = IP-Address or DNS-Name of the W2K-Server\n";
print "<port> = SNMP-Port (normaly 161)\n";
print "<community> = SNMP v1 community\n";
print "<fannumber> = Fannumber (1, 2, 3 etc.)\n";
}
sub version () {
print_revision($PROGNAME,'$Revision: 1.1 $ ');
exit $ERRORS{'OK'};
}
sub help () {
print_help();
exit $ERRORS{'OK'};
}
|