Как ходить между oids в 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()  

Я хочу пройти между двумя оидами (например, 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, используя этот синтаксис?


person yuval    schedule 25.05.2015    source источник


Ответы (2)


Если ваш cbFun_Mac_Address() возвращает значение True, pysnmp продолжит работу с тем же агентом. Если ваша функция обратного вызова вернет False, pysnmp сразу перестанет идти. Таким образом, ваша функция обратного вызова должна следить за прибытием окончательного OID и затем возвращать False. См. этот пример. .

person Ilya Etingof    schedule 25.05.2015

В приведенном ниже примере:

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:

to:

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

Вы точно соответствуете той ветке, которую хотите пройти.

person ROGER S. SACCHELLI    schedule 04.10.2016