在pysnmp中重用getCmd对象

时间:2016-01-07 11:34:58

标签: python python-2.7 snmp pysnmp

在pysnmp文档中有一个getCmd类,我想知道是否有可能只是实例化一次类,并在稍后通过传递新的oid重用它。我不确定getCmd类是否公开允许我更改oids的方法。

http://pysnmp.sourceforge.net/docs/hlapi/asyncore/sync/manager/cmdgen/getcmd.html

1 个答案:

答案 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))