#!/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, в котором около 200 элементов 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() #После вызова callback-функции cbFun выведется varBinds, в котором будет только 1 элемент if __name__ == '__main__': main()
Почему при асинхронном диспетчере я получаю одно значение? Как получить все, что я не так делаю?