之前用stacklesssocket+pysnmp没有成功.
这次尝试gevent的patch,居然成功了.
这个还是原型,没有处理snmp的异常
不过确实可以实现并行snmpget的功能.
而且代码基本没有改变.
#!/bin/env python
# -*- coding: utf-8 -*-
##coding=gbk
#使用gevent改造pysnmp,实现并行snmp
import gevent
import sys
from pysnmp.entity.rfc3413.oneliner import cmdgen
from gevent import monkey
monkey.patch_all()
#创建函数
def snmpget(i):
ip="192.168.6.2%d" % i
print ip
errorIndication, errorStatus, errorIndex, varBinds = cmdgen.CommandGenerator().getCmd(
#0代表v1,1代表v2c
cmdgen.CommunityData('my-agent', 'public', 1),
cmdgen.UdpTransportTarget((ip, 161)),
'1.3.6.1.2.1.1.1.0'
)
print str(varBinds[0][1]);
#创建协程
nodes = []
for i in xrange(1,100):
nodes.append(gevent.spawn(snmpget, i))
#开始运行
gevent.joinall(nodes)