From 62d93550ea39333c09daeb12b5c91718b2149b4c Mon Sep 17 00:00:00 2001
From: Subhendu Ghosh <sghosh@users.sourceforge.net>
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

