Я пытаюсь использовать метод setCmd() в pysnmp для установки переменной. У меня возникают проблемы с определением определенного объекта, потому что кажется, что pysnmp добавляет ".0" к идентификатору объекта, который я хочу установить. Почему это происходит?
Выход, который я получаю:
noSuchName at 1.3.6.1.4.1.2682.1.2.3.4.0
Содержание скрипта:
errorIndication, errorStatus, errorIndex, varBinds = next(
setCmd(SnmpEngine(),
CommunityData('dps_public', mpModel=0),
UdpTransportTarget(('192.168.1.100', 161)),
ContextData(),
ObjectType(ObjectIdentity('1.3.6.1.4.1.2682.1.2.3.4'),
Integer(2)))
)
if errorIndication:
print(errorIndication)
elif errorStatus:
print('%s at %s' % (errorStatus.prettyPrint(),
errorIndex and varBinds[int(errorIndex) - 1][0] or '?'))
else:
for varBind in varBinds:
print(' = '.join([x.prettyPrint() for x in varBind]))
Я подозреваю, что вы получаете этот измененный OID от вашего агента SNMP (что, я думаю, было бы нарушением протокола). Насколько я знаю, pysnmp не должен путаться с OID.
Чтобы проверить, можете ли вы попробовать свой сценарий против агента SNMP на demo.snmplabs.com и/или включить отладку pysnmp и посмотреть, что происходит в PDU от агента SNMP, который вы запрашиваете.
from pysnmp import debug
debug.setLogger(debug.Debug('msgproc'))
...
ObjectIdentity('1.3.6.1.4.1.2682.1.2.3.4.0')
. Отладка помогла, хотя. Благодарю.