[Nagiosplug-checkins] SF.net SVN: nagiosplug:[2215] nagiosplug/trunk

dermoth at users.sourceforge.net dermoth at users.sourceforge.net
Thu Jun 11 17:29:39 CEST 2009


Revision: 2215
          http://nagiosplug.svn.sourceforge.net/nagiosplug/?rev=2215&view=rev
Author:   dermoth
Date:     2009-06-11 15:29:39 +0000 (Thu, 11 Jun 2009)

Log Message:
-----------
check_ifoperstatus is now more user friendly in case of missing arguments

Added proper usage messages in case of missing arguments.
Removed accidently committed Data::Dumper call.
Minor whitespace fixes.

From: Matthias Eble <psychotrahe at gmx.de>

Modified Paths:
--------------
    nagiosplug/trunk/NEWS
    nagiosplug/trunk/plugins-scripts/check_ifoperstatus.pl

Modified: nagiosplug/trunk/NEWS
===================================================================
--- nagiosplug/trunk/NEWS	2009-06-11 15:29:30 UTC (rev 2214)
+++ nagiosplug/trunk/NEWS	2009-06-11 15:29:39 UTC (rev 2215)
@@ -40,6 +40,7 @@
 	check_snmp now supports standard threshold ranges and doubles (floating numbers) in thresholds
 	check_fping now supports passing target timeout and interval to fping (#2347686 - Martin Foster)
 	Fixed SNMPv3 behaviour of check_ifoperstatus. Added -x to define privprotocol (#2343438 - Robin Schroeder)
+	check_ifoperstatus is now more userfriendly in case of missing arguments
 
 1.4.13 25th Sept 2008
 	Fix Debian bug #460097: check_http --max-age broken (Hilko Bengen)

Modified: nagiosplug/trunk/plugins-scripts/check_ifoperstatus.pl
===================================================================
--- nagiosplug/trunk/plugins-scripts/check_ifoperstatus.pl	2009-06-11 15:29:30 UTC (rev 2214)
+++ nagiosplug/trunk/plugins-scripts/check_ifoperstatus.pl	2009-06-11 15:29:39 UTC (rev 2215)
@@ -43,18 +43,19 @@
 
 my $PROGNAME = "check_ifoperstatus";
 sub print_help ();
-sub usage ();
+sub usage ($);
+sub print_usage ();
 sub process_arguments ();
 
 my $timeout;
 my $status;
 my %ifOperStatus = 	('1','up',
-			 '2','down',
-			 '3','testing',
-			 '4','unknown',
-			 '5','dormant',
-			 '6','notPresent',
-			 '7','lowerLayerDown');  # down due to the state of lower layer interface(s)
+                     '2','down',
+                     '3','testing',
+                     '4','unknown',
+                     '5','dormant',
+                     '6','notPresent',
+                     '7','lowerLayerDown');  # down due to the state of lower layer interface(s)
 
 my $state = "UNKNOWN";
 my $answer = "";
@@ -96,7 +97,6 @@
 $status = process_arguments();
 
 
-use Data::Dumper;
 # Just in case of problems, let's not hang Nagios
 $SIG{'ALRM'} = sub {
 	print ("ERROR: No snmp response from $hostname (alarm)\n");
@@ -105,7 +105,6 @@
 
 alarm($timeout);
 
-print Dumper(\%session_opts);
 ($session, $error) = Net::SNMP->session(%session_opts);
 
 		
@@ -269,8 +268,13 @@
 	return $snmpkey;
 }
 
-sub usage() {
-	printf "\nMissing arguments!\n";
+sub usage($) {
+	print "$_[0]\n";
+	print_usage();
+	exit $ERRORS{"UNKNOWN"};
+}
+
+sub print_usage() {
 	printf "\n";
 	printf "usage: \n";
 	printf "check_ifoperstatus -k <IF_KEY> -H <HOSTNAME> [-C <community>]\n";
@@ -279,10 +283,11 @@
 	printf "This programm is licensed under the terms of the ";
 	printf "GNU General Public License\n(check source code for details)\n";
 	printf "\n\n";
-	exit $ERRORS{"UNKNOWN"};
 }
 
 sub print_help() {
+	print_revision($PROGNAME, '@NP_VERSION@');
+	print_usage();
 	printf "check_ifoperstatus plugin for Nagios monitors operational \n";
 	printf "status of a particular network interface on the target host\n";
 	printf "\nUsage:\n";
@@ -323,7 +328,6 @@
 	printf "intensive.  Use it sparingly or not at all.  -n is used to match against\n";
 	printf "a much more descriptive ifName value in the IfXTable to verify that the\n";
 	printf "snmpkey has not changed to some other network interface after a reboot.\n\n";
-	print_revision($PROGNAME, '@NP_VERSION@');
 	
 }
 
@@ -371,14 +375,11 @@
 	}
 
 	if (! utils::is_hostname($hostname)){
-		usage();
-		exit $ERRORS{"UNKNOWN"};
+		usage("Hostname invalid or not given");
 	}
 
 	unless ($snmpkey > 0 || defined $ifdescr || defined $iftype){
-		printf "Either a valid snmpkey key (-k) or a ifDescr (-d) must be provided)\n";
-		usage();
-		exit $ERRORS{"UNKNOWN"};
+		usage("Either a valid snmpkey key (-k) or a ifDescr (-d) must be provided");
 	}
 
 	if (defined $name) {
@@ -419,21 +420,18 @@
 		
 			# Must define a security level even though defualt is noAuthNoPriv
 			unless ( grep /^$seclevel$/, qw(noAuthNoPriv authNoPriv authPriv) ) {
-				usage();
-				exit $ERRORS{"UNKNOWN"};
+				usage("Must define a security level even though default is noAuthNoPriv");
 			}
 			
 			# Authentication wanted
 			if ( $seclevel eq 'authNoPriv' || $seclevel eq 'authPriv' ) {
-				unless ( $authproto eq 'MD5' || $authproto eq 'SHA1' ) {
-					usage();
-					exit $ERRORS{"UNKNOWN"};
+				if (defined $authproto && $authproto ne 'MD5' && $authproto ne 'SHA1') {
+					usage("Auth protocol can be either MD5 or SHA1");
 				}
 				$session_opts{'-authprotocol'} = $authproto if(defined $authproto);
 
 				if ( !defined $authpass) {
-					usage();
-					exit $ERRORS{"UNKNOWN"};
+					usage("Auth password/key is not defined");
 				}else{
 					if ($authpass =~ /^0x/ ) {
 						$session_opts{'-authkey'} = $authpass ;
@@ -446,8 +444,7 @@
 			# Privacy (DES encryption) wanted
 			if ($seclevel eq 'authPriv' ) {
 				if (! defined $privpass) {
-					usage();
-					exit $ERRORS{"UNKNOWN"};
+					usage("Privacy passphrase/key is not defined");
 				}else{
 					if ($privpass =~ /^0x/){
 						$session_opts{'-privkey'} = $privpass;
@@ -465,8 +462,7 @@
 			}
 		
 		}else {
-					usage();
-					exit $ERRORS{'UNKNOWN'}; ;
+			usage("Security level or name is not defined");
 		}
 	} # end snmpv3
 


This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.




More information about the Commits mailing list