Code

Update libtool
[nagiosplug.git] / plugins-scripts / check_ifoperstatus.pl
index 88782f52d1878f94760faff986ec1f24d65cfaad..588993be9613656ba535576c1dc57f3cae47fe5e 100755 (executable)
@@ -43,18 +43,19 @@ use Getopt::Long;
 
 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 @@ my %session_opts;
 $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 @@ $SIG{'ALRM'} = sub {
 
 alarm($timeout);
 
-print Dumper(\%session_opts);
 ($session, $error) = Net::SNMP->session(%session_opts);
 
                
@@ -269,8 +268,13 @@ sub fetch_ifindex {
        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 @@ sub usage() {
        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";
@@ -303,7 +308,7 @@ sub print_help() {
        printf "   -X (--privpass)   privacy password (cleartext ascii or localized key\n";
        printf "                     in hex with 0x prefix generated by using \"snmpkey\" utility\n"; 
        printf "                     privacy password and authEngineID\n";
-       printf "   -x (--privproto)  privacy protocol (DES or AES; default: DES)\n";
+       printf "   -P (--privproto)  privacy protocol (DES or AES; default: DES)\n";
        printf "   -k (--key)        SNMP IfIndex value\n";
        printf "   -d (--descr)      SNMP ifDescr value\n";
        printf "   -T (--type)       SNMP ifType integer value (see http://www.iana.org/assignments/ianaiftype-mib)\n";
@@ -323,7 +328,6 @@ sub print_help() {
        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@');
        
 }
 
@@ -338,7 +342,7 @@ sub process_arguments() {
                        "U=s" => \$secname,   "secname=s"   => \$secname,
                        "A=s" => \$authpass,  "authpass=s"  => \$authpass,
                        "X=s" => \$privpass,  "privpass=s"  => \$privpass,
-                       "x=s" => \$privproto,  "privproto=s"  => \$privproto,
+                       "P=s" => \$privproto,  "privproto=s"  => \$privproto,
                        "c=s" => \$context,   "context=s"   => \$context,
                        "k=i" => \$snmpkey, "key=i",\$snmpkey,
                        "d=s" => \$ifdescr, "descr=s" => \$ifdescr,
@@ -371,17 +375,14 @@ sub process_arguments() {
        }
 
        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 snmp key (-k) or a ifDescr (-d) must be provided");
        }
 
-       if (defined $name) {
+       if (defined $ifName) {
                $ifXTable=1;
        }       
 
@@ -419,21 +420,18 @@ sub process_arguments() {
                
                        # 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 valid 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 @@ sub process_arguments() {
                        # 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 @@ sub process_arguments() {
                        }
                
                }else {
-                                       usage();
-                                       exit $ERRORS{'UNKNOWN'}; ;
+                       usage("Security level or name is not defined");
                }
        } # end snmpv3