如何在pysnmp中走到oids之间

时间:2015-05-25 07:18:47

标签: python snmp pysnmp

我有以下代码:

cmdGen = cmdgen.AsynCommandGenerator()
    cmdGen.asyncNextCmd(
        cmdgen.CommunityData('public', mpModel=0),
        cmdgen.UdpTransportTarget((ip, 161)),
        ((1,3,6,1,2,1,2,2,1,6,1),),#walks from this oid until end of mib table
        (cbFun_Mac_Address, (cmdgen.CommunityData('public', mpModel=0), cmdgen.UdpTransportTarget((ip, 161)))))
cmdGen.snmpEngine.transportDispatcher.runDispatcher()  

我想在两个oids之间行走(例如1,3,6,1,2,1,2,2,1,6,1 - 1,3,6,1,2,1,2,2 ,1,6,9),但此代码从(1,3,6,1,2,1,2,2,1,6,1)开始,直到找到最后一个oid为止。
那么我如何使用这种语法走到oid之间而不是走整个mib表呢?

2 个答案:

答案 0 :(得分:1)

如果你的cbFun_Mac_Address()返回True,pysnmp将继续走同一个Agent。如果你的回调函数返回False,pysnmp将立即停止行走。所以你的回调函数应该注意到达的最终OID然后返回False。请参阅this example

答案 1 :(得分:0)

在下面提到的例子中:

http://pysnmp.sourceforge.net/examples/current/v3arch/oneliner/manager/cmdgen/getnext-async-multiple-transports-and-protocols.html

如果你换行:

 if val is not None and varBindHead[idx] <= name:

为:

 if val is not None and varBindHead[idx] == name[0:len(varBindHead[idx])]:

您完全匹配您想要走过的分支。