Андрей Светлов
Вы меня неправильно поняли. Я имел в виду нечто вроде
from pysnmp.entity.rfc3413.oneliner import cmdgen
ips = [line for line in open('/home/bin/dlink.lst')]
def cbFun(sendRequestHandle, errorIndication, errorStatus, errorIndex, varBinds, cbCtx):
print 'sendRequestHandle =', sendRequestHandle
print 'errorIndication =', errorIndication
print 'errorStatus =', errorStatus
print 'varBinds =', varBinds
print 'cbCtx =', cbCtx
asynCommandGenerator = cmdgen.AsynCommandGenerator()
for ip in ips:
sendRequestHandle = asynCommandGenerator.asyncNextCmd(
cmdgen.CommunityData('None', 'initial_pysnmp'),
cmdgen.UdpTransportTarget((ip.split()[0], 161),retries=0),
((1,3,6,1,4,1,171,12,8,1,1,3,0),),(cbFun, None))
asynCommandGenerator.snmpEngine.transportDispatcher.runDispatcher()
Спасибо, за ответ! Проверил но как-то все странно работает, больше 50 устройств не может обработать, в результате получаю списки а в списке кортежи и говорит что “No SNMP response received before timeout”. Как-то всё веселенько получается.
[('a575021578',), ('a575021787',), ('a575021885',), ('a575021573',), ('a575021569',), ('a575022013',), ('a575022090',), ('a575021775',), ('a575022030',), ('a575022247',), ('a575021748',), ('a575021907',), ('a575022076',), ('a575021672',), ('a575021657',), ('a575022173',), ('a575022148',), ('a575021852',), ('a575021705',), ('a575021973',), ('a575022285',), ('a575021946',), ('a575021688',), ('a575022158',), ('a575022098',)]
sendRequestHandle = 193244589
errorIndication = No SNMP response received before timeout
errorStatus = 0
varBinds = ()
cbCtx = NoneЕсли опросить 50 устройств через асинхроный диспетчер то все ок, если больше то вывод описал выше. Есть у вас доводы?