Python 如何在AsyncCommandGenerator中进行多个GETNEXT查询?

Python 如何在AsyncCommandGenerator中进行多个GETNEXT查询?,python,pysnmp,Python,Pysnmp,我得到CommandGenerator中的所有元素。但我在AsyncCommandGenerator中只有一个元素。如何获取所有这些值?要执行另一个GETNEXT,cbFun()应通过返回True请求。否则,AsyncCommandGenerator不会执行下一个GETNEXT 请参见我添加了“return True”,并且在CommandGenerator和AsyncCommandGenerator之间得到了不同的值。异步值的计数非常大。我也试过你的例子,仍然得到了一个巨大的值包。默认情况下,

我得到CommandGenerator中的所有元素。但我在AsyncCommandGenerator中只有一个元素。如何获取所有这些值?

要执行另一个GETNEXT,cbFun()应通过返回True请求。否则,AsyncCommandGenerator不会执行下一个GETNEXT


请参见

我添加了“return True”,并且在CommandGenerator和AsyncCommandGenerator之间得到了不同的值。异步值的计数非常大。我也试过你的例子,仍然得到了一个巨大的值包。默认情况下,同步版本在“下一个”OID离开初始OID前缀时停止。这可以通过添加lexicographicMode=True参数来更改。异步版本始终运行代理直到mib结束,除非您的cbFun()提前停止它。我不确定你在这里的最终目标是什么。请告知。这是获取整个MIB的同步版本(如果删除了maxRows):
#!/usr/bin/env python
#-*- coding: utf-8 -*-
from pysnmp.entity.rfc3413.oneliner import cmdgen
def cbFun(sendRequestHandle, errorIndication, errorStatus, errorIndex, varBinds, cbCtx):
    print varBinds

def main():
    ip = '127.0.0.1'
    cmdGen = cmdgen.CommandGenerator()
    errorIndication, errorStatus, errorIndex, varBinds = cmdGen.nextCmd(
        cmdgen.CommunityData('mymypub')
        cmdgen.UdpTransportTarget((ip, 161)),
        '1.3.6.1.2.1.17.7.1.2.2.1.2')
    #varBinds have about 200 elements
    print varBinds

    cmdGen = cmdgen.AsynCommandGenerator()
    cmdGen.asyncNextCmd(
        cmdgen.CommunityData('mymypub'),
        cmdgen.UdpTransportTarget((ip, 161)),
        ((1,3,6,1,2,1,17,7,1,2,2,1,2),),
        (cbFun, ip))
    cmdGen.snmpEngine.transportDispatcher.runDispatcher()
    #varBinds have 1 element
if __name__ == '__main__':
    main()