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 <[email protected]>
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.
------------------------------------------------------------------------------
Crystal Reports - New Free Runtime and 30 Day Trial
Check out the new simplified licensing option that enables unlimited
royalty-free distribution of the report engine for externally facing
server and web deployment.
http://p.sf.net/sfu/businessobjects
lmpx.com only provides a reader for public news (NNTP) servers. It is not
affiliated with the servers or forums shown here and is not responsible for
the content of articles, which is written by their respective authors.