joe_tseng has asked for the wisdom of the Perl Monks concerning the following question:
We're working on a script using Net-SNMP that will talk to devices using both SNMPv1 and v3. (The plan is to automate the device configurations en masse to use v3.) We're coming across a very strange problem where the script gets hung after we issue bulkwalk commands followed by a MainLoop call:
foreach my $host (@{$hashRef->{hostArray}}){ printf "Starting SNMP bulkwalk for %s\n", $host if($DEBUG); $hashRef->{config}->{DestHost} = $host; my $session = SNMP::Session->new( %{$hashRef->{config}} ); die("No session\n") if(!$session); $session->bulkwalk($hashRef->{snmpSingle}, $hashRef->{snmpBulk +}, $hashRef->{varList}, [\&snmpCallback, $session, $host, \$arraySize +, \%snmpData]); } print "Just before Main Loop\n"; SNMP::MainLoop();
We're getting this running v3 which is behaving as predicted:
trace: _callback_lock(): callback.c, 130: 9:callback:lock: locked (LIB,SESSION_INIT) trace: snmp_call_callbacks(): callback.c, 322: callback: START calling callbacks for maj=0 min=5 trace: snmp_call_callbacks(): callback.c, 336: callback: calling a callback for maj=0 min=5 trace: snmp_call_callbacks(): callback.c, 348: callback: END calling callbacks for maj=0 min=5 (1 called) trace: _callback_unlock(): callback.c, 164: 9:callback:lock: unlocked (LIB,SESSION_INIT) trace: snmp_sess_add_ex(): snmp_api.c, 1683: snmp_sess_add: adding v3 session -- maybe engineID probe now trace: usm_get_user(): snmpusm.c, 2994: usm: getting user trace: snmpv3_engineID_probe(): snmp_api.c, 1409: snmp_api: probing for engineID... trace: snmpv3_build(): snmp_api.c, 2330: snmp_build: Building SNMPv3 message (secName:"dcosnmpadmin", secLevel: +noAuthNoPriv)... <snip>
But when I run it using v1 it hangs:
trace: _callback_lock(): callback.c, 130: 9:callback:lock: locked (LIB,SESSION_INIT) trace: snmp_call_callbacks(): callback.c, 322: callback: START calling callbacks for maj=0 min=5 trace: snmp_call_callbacks(): callback.c, 336: callback: calling a callback for maj=0 min=5 trace: snmp_call_callbacks(): callback.c, 348: callback: END calling callbacks for maj=0 min=5 (1 called) trace: _callback_unlock(): callback.c, 164: 9:callback:lock: unlocked (LIB,SESSION_INIT) trace: _sess_async_send(): snmp_api.c, 5067: sess_async_send: encoding failure trace: snmp_sess_select_info2(): snmp_api.c, 6188: sess_select: for all sessions: 4 sess_select: blocking:no session requests or alarms.
And it ends there. El Goog did not return anything helpful with the msgs from STDERR.
Here's the output from STDOUT:
trace: _callback_unlock(): callback.c, 164: 9:callback:lock: unlocked (LIB,SESSION_INIT) trace: _sess_async_send(): snmp_api.c, 5067: sess_async_send: encoding failure Just before Main Loop trace: snmp_sess_select_info2(): snmp_api.c, 6188: sess_select: for all sessions: 4 sess_select: blocking:no session requests or alarms.
If anyone has a clue as what's going on pls share it with me - I'd be very appreciative!!!
- Joe
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: Odd SNMP module behavior
by irirgem (Novice) on Sep 15, 2012 at 12:55 UTC | |
by joe_tseng (Novice) on Sep 26, 2012 at 19:47 UTC | |
by joe_tseng (Novice) on Sep 19, 2012 at 15:38 UTC | |
by joe_tseng (Novice) on Sep 21, 2012 at 19:08 UTC |