我正试图在某些网络设备上进行snmp行走 在一些网络设备上,我成功地通过所有设备oids和一些网络设备,我没有成功通过所有设备oids。 这是我的代码:
cmdGen = cmdgen.AsynCommandGenerator()
cmdGen.asyncNextCmd(
cmdgen.CommunityData('public', mpModel=0),
cmdgen.UdpTransportTarget(('ip', 161),timeout=timeout,retries=retries),
((1,3),),
(cbFun_Walk, None))
cmdGen.snmpEngine.transportDispatcher.runDispatcher()
问题是有时asyncCommandGenerator会在certaion oid上获得超时并且存在于该线程之外。
正如您所看到的,线程到达某个oid,出现超时错误,然后退出该线程
所以我想知道如果达到一个超时的oid,如何继续snmpwalk
基本上,如果asyncCommandGenerator到达一个超时的oid,它应该继续walk并获得其余的oids。
我怎么能实现这个目标?
答案 0 :(得分:1)
从逻辑上讲,你不能跳过" next" OID请求超时,因为您不知道下一个OID是什么。我可以在这里看到两个解决方法: