SNMPWALK Problem. Problem if using Net_SNMP_util.pm
Carlos Velasco <[email protected]> Thu, 22 Mar 2007 22:55:29 +0100
| Newsgroups | gmane.network.mrtg.devel |
|---|---|
| Message-ID | <[email protected]> |
Hello, If one host is down, when performing snmpwalk due to Interface by Name configuration (Target[myrouter]: #2/11:[email protected]), this code will not work as expected. errmsg is never used in Net_SNMP_util, only in SNMP_util. Its value is undef. When host is down, the result is @ret defined with 1 element in array, the element is an undef. The code will result in several delay in mrtg processing, as all nodes are tried and failed, the host is never marked as dead. MRTG_lib.pm (line 1623) foreach my $node (@nodes) { next if $confcache->{___deadhosts}{$hostkey} and time - $confcache->{___deadhosts}{$hostkey} < 300; $SNMP_Session::errmsg = undef; @ret = snmpwalk(v4onlyifnecessary($host, $ipv4only), $snmpoptions, $node); unless ( $SNMP_Session::errmsg){ foreach my $ret (@ret) { my ($oid, $desc) = split(':', $ret, 2); if ($tables{$node} eq 'Ip') { storeincache($confcache,$host,$tables{$node},$oid,$desc); } else { $desc =~ s/[\0- ]+$//; #trailing whitespace is too sick for us $desc =~ s/[\0- ]/ /g; #whitespace is just whitespace storeincache($confcache,$host,$tables{$node},$desc,$oid); } }; } else { $confcache->{___deadhosts}{$hostkey} = time if $SNMP_Session::errmsg =~ /no response received/; debug('coca',"Skipping $node scanning because $host does not seem to support it"); } Regards, Carlos Velasco