...
- While working with SNMPv3 with a specific SNMP agent, we encountered problems with SNMPv3 “Time synchronization”, some research determined that this error could be ignored, so modifying the Net::SNMP Perl library could workaround this problem.
- If you encounter the 'Time synchronization failed during discovery' error using the perl Net::SNMP library there may be a fairly easy
...
- work around.
...
- It may be as easy as editing the Net::SNMP module to not invoke this error.
...
- The following advice should be executed as root.
- The following was done with the Net::SNMP Version 6.0.1 package. If this library is upgraded, this patch may need to be reapplied.
Find Net::SNMP
In order to find where Net::SNMP is on the subject system issue the following command.
...
If you are unfortunate as in the above example, two SNMP.pm files may be returned. In order to determine which one perl is invoking use the perl -V command.
...
The @INC array is a list of directories that perl looks in to find modules. This is a top down, first match find operation. Based on this the version in /usr/local/share/perl5/Net will be utilized because it will be found first.
Edit Net::SNMP
Always make a backup of a module prior to editing it. In order to prevent Net::SNMP from failing due to this error we edited it in the following fashion.
...
We were able to get the agent to work by doing the following:
- Commenting out part of the if statement on line 2545. (The if statement will need to be re-written)
- Commenting out lines 2562 through 2565.
Code Block | ||
---|---|---|
| ||
2544 if (($this->{_security}->discovered) && 2545 ($this->{_error} =~ /usmStatsNotInTimeWindows/)) 2546 { 2547 $this->_error_clear; 2548 2549 DEBUG_INFO('discovery and synchronization complete'); 2550 2551 # Discovery is complete, send any pending messages 2552 while (my $q = shift(@{$this->{_discovery_queue}})) { 2553 $DISPATCHER->send_pdu(@{$q}); 2554 } 2555 2556 return TRUE; 2557 } 2558 2559 # If we received the usmStatsNotInTimeWindows report or no error, but 2560 # we are still not synchronized, provide a generic error message. 2561 2562 - if ((!$this->{_error}) || ($this->{_error} =~ /usmStatsNotInTimeWindows/)) { -2563 $this->_error_clear(); -2564 $this->_error('Time synchronization failed during discovery'); - } + #if ((!$this->{_error}) || ($this->{_error} =~ /usmStatsNotInTimeWindows/)) { + # $this->_error_clear(); + # $this->_error('Time synchronization failed during discovery'); + #} DEBUG_INFO('synchronization failed'); |
Complete files:
...
2565 } |