如何在 pysnmp 中的 oids 之间行走

问题描述 投票:0回答:2

我有以下代码:

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()  

我想在两个 oid 之间行走(例如 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。
那么我怎样才能使用这种语法在 oids 之间行走而不是遍历整个 mib 表呢?

python snmp pysnmp
2个回答
1
投票

如果你的cbFun_Mac_Address()返回True,pysnmp将继续走同一个代理。如果你的回调函数返回False,pysnmp将立即停止行走。所以你的回调函数应该注意最终的 OID 到达并返回 False。请参阅此示例


0
投票

在官方文档网站中提到的示例中,如果更改行:

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

至:

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

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

© www.soinside.com 2019 - 2024. All rights reserved.