在pysnmp文档中有一个getCmd类,我想知道是否有可能只是实例化一次类,并在稍后通过传递新的oid重用它。我不确定getCmd类是否公开允许我更改oids的方法。
http://pysnmp.sourceforge.net/docs/hlapi/asyncore/sync/manager/cmdgen/getcmd.html
答案 0 :(得分:0)
getCmd名称是指一个函数,而不是一个类。从技术上讲,它是一个发电机,但这并不重要。
调用* Cmd()是很便宜的,因为所有繁重的提升和状态管理都是在SnmpEngine对象上完成的(getCmd的第一个参数)。因此,从性能角度来看,尽可能保持SnmpEngine对象的持久性非常重要。
>>> from pysnmp.hlapi.asyncore import *
>>> snmpEngine = SnmpEngine()
>>> for oid in ['1.3.6.1.2.1.2.2.1.8.1', '1.3.6.1.2.1.2.2.1.8.2']:
... g = getCmd(snmpEngine,
... CommunityData('public'),
... UdpTransportTarget(('demo.snmplabs.com', 161)),
... ContextData(),
... ObjectType(ObjectIdentity(oid)))
>>> print(next(g))