Повторно использовать объект getCmd в pysnmp

В документации pysnmp есть класс getCmd, мне было интересно, можно ли просто создать экземпляр класса один раз и повторно использовать его позже, передав ему новые oids. Я не уверен, что класс getCmd предоставляет методы, позволяющие мне изменять oids.

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


person Johnathon64    schedule 07.01.2016    source источник


Ответы (1)


Имя 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))
person Ilya Etingof    schedule 07.01.2016