在 pysnmp 中重用 getCmd 对象

Reuse getCmd object in pysnmp

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

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

getCmd 名称指的是函数,而不是 class。从技术上讲,它是一个生成器,但这在这里并不重要。

调用 *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))