From 62d93550ea39333c09daeb12b5c91718b2149b4c Mon Sep 17 00:00:00 2001 From: Subhendu Ghosh Date: Wed, 5 Nov 2003 22:59:41 +0000 Subject: added plugin timeout options git-svn-id: https://nagiosplug.svn.sourceforge.net/svnroot/nagiosplug/nagiosplug/trunk@758 f882894a-f735-0410-b71e-b25c423dba1c diff --git a/plugins-scripts/check_ifoperstatus.pl b/plugins-scripts/check_ifoperstatus.pl index 8a23ca5..a43e9f4 100644 --- a/plugins-scripts/check_ifoperstatus.pl +++ b/plugins-scripts/check_ifoperstatus.pl @@ -47,6 +47,7 @@ sub print_help (); sub usage (); sub process_arguments (); +my $timeout; my $status; my %ifOperStatus = ('1','up', '2','down', @@ -87,6 +88,9 @@ my $lastc; my $dormantWarn; my $name; +### Validate Arguments + +$status = process_arguments(); # Just in case of problems, let's not hang Nagios @@ -94,12 +98,8 @@ $SIG{'ALRM'} = sub { print ("ERROR: No snmp response from $hostname (alarm)\n"); exit $ERRORS{"UNKNOWN"}; }; -alarm($TIMEOUT); - - -### Validate Arguments -$status = process_arguments(); +alarm($timeout); ## map ifdescr to ifindex - should look at being able to cache this value @@ -287,6 +287,7 @@ sub print_help() { printf " (Implies the use of -I)\n"; printf " -w (--warn =i|w|c) ignore|warn|crit if the interface is dormant (default critical)\n"; printf " -M (--maxmsgsize) Max message size - usefull only for v1 or v2c\n"; + printf " -t (--timeout) seconds before the plugin times out (default=$TIMEOUT)\n"; printf " -V (--version) Plugin version\n"; printf " -h (--help) usage help \n\n"; printf " -k or -d must be specified\n\n"; @@ -313,12 +314,14 @@ sub process_arguments() { "k=i" => \$snmpkey, "key=i",\$snmpkey, "d=s" => \$ifdescr, "descr=s" => \$ifdescr, "l=s" => \$lastc, "lastchange=s" => \$lastc, - "p=i" = >\$port, "port=i" =>\$port, + "p=i" => \$port, "port=i" =>\$port, "H=s" => \$hostname, "hostname=s" => \$hostname, "I" => \$ifXTable, "ifmib" => \$ifXTable, "n=s" => \$ifName, "name=s" => \$ifName, "w=s" => \$dormantWarn, "warn=s" => \$dormantWarn, - "M=i" => \$maxmsgsize, "maxmsgsize=i" => \$maxmsgsize); + "M=i" => \$maxmsgsize, "maxmsgsize=i" => \$maxmsgsize, + "t=i" => \$timeout, "timeout=i" => \$timeout, + ); @@ -361,6 +364,10 @@ sub process_arguments() { } } + unless (defined $timeout) { + $timeout = $TIMEOUT; + } + if ($snmp_version =~ /3/ ) { # Must define a security level even though default is noAuthNoPriv # v3 requires a security username diff --git a/plugins-scripts/check_ifstatus.pl b/plugins-scripts/check_ifstatus.pl index 4f17711..7452394 100755 --- a/plugins-scripts/check_ifstatus.pl +++ b/plugins-scripts/check_ifstatus.pl @@ -56,6 +56,7 @@ my %ifOperStatus = ('1','up', '6','notPresent', '7','lowerLayerDown'); # down due to the state of lower layer interface(s)); +my $timeout ; my $state = "UNKNOWN"; my $answer = ""; my $snmpkey=0; @@ -114,7 +115,7 @@ if ($status != 0) } -alarm($TIMEOUT); +alarm($timeout); push(@snmpoids,$snmpIfOperStatus); push(@snmpoids,$snmpIfAdminStatus); @@ -251,6 +252,7 @@ sub print_help (){ printf " in hex with 0x prefix generated by using \"snmpkey\" utility\n"; printf " privacy password and authEngineID\n"; printf " -M (--maxmsgsize) Max message size - usefull only for v1 or v2c\n"; + printf " -t (--timeout) seconds before the plugin times out (default=$TIMEOUT)\n"; printf " -V (--version) Plugin version\n"; printf " -h (--help) usage help \n\n"; print_revision($PROGNAME, '$Revision$'); @@ -274,7 +276,9 @@ sub process_arguments() { "I" => \$ifXTable, "ifmib" => \$ifXTable, "x:s" => \$opt_x, "exclude:s" => \$opt_x, "u=s" => \$opt_u, "unused_ports=s" => \$opt_u, - "M=i" => \$maxmsgsize, "maxmsgsize=i" => \$maxmsgsize); + "M=i" => \$maxmsgsize, "maxmsgsize=i" => \$maxmsgsize, + "t=i" => \$timeout, "timeout=i" => \$timeout, + ); if ($status == 0){ print_help() ; @@ -290,6 +294,9 @@ sub process_arguments() { exit $ERRORS{'OK'}; } + unless (defined $timeout) { + $timeout = $TIMEOUT; + } if ($snmp_version =~ /3/ ) { # Must define a security level even though default is noAuthNoPriv -- cgit v0.10-9-g596f