Code

patched bug id 1204636
[nagiosplug.git] / plugins-scripts / check_ifstatus.pl
index 3372adbf466582a615e59151cff62cce7c6c21d8..1a168bf013961a4b3ff56062ad37aaf30889e8a3 100755 (executable)
@@ -53,8 +53,10 @@ my %ifOperStatus =   ('1','up',
                         '3','testing',
                         '4','unknown',
                         '5','dormant',
-                        '6','notPresent');
+                        '6','notPresent',
+                        '7','lowerLayerDown');  # down due to the state of lower layer interface(s));
 
+my $timeout ;
 my $state = "UNKNOWN";
 my $answer = "";
 my $snmpkey=0;
@@ -113,7 +115,7 @@ if ($status != 0)
 }
 
 
-alarm($TIMEOUT);
+alarm($timeout);
 
 push(@snmpoids,$snmpIfOperStatus);
 push(@snmpoids,$snmpIfAdminStatus);
@@ -204,7 +206,7 @@ foreach $key (keys %ifStatus) {
                        $ifexclude,
                        $ifunused);
    }
-my $perfdata = sprintf("up:%d,down:%d,dormant:%d,excluded:%d,unused:%d",$ifup,$ifdown,$ifdormant,$ifexclude,$ifunused);
+my $perfdata = sprintf("up=%d,down=%d,dormant=%d,excluded=%d,unused=%d",$ifup,$ifdown,$ifdormant,$ifexclude,$ifunused);
 print ("$state: $answer |$perfdata\n");
 exit $ERRORS{$state};
 
@@ -250,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$');
@@ -273,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() ;
@@ -289,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
@@ -416,6 +424,7 @@ sub process_arguments() {
                                -port      => $port,
                                -version  => $snmp_version,
                                -username => $secname,
+                               -authprotocol => $authproto,
                                $auth
                        );      
                }elsif ($seclevel eq 'authPriv' ) {
@@ -424,6 +433,7 @@ sub process_arguments() {
                                -port      => $port,
                                -version  => $snmp_version,
                                -username => $secname,
+                               -authprotocol => $authproto,
                                $auth,
                                $priv
                        );