У меня есть следующая успешная команда net-snmp:
snmpget -v3 -l authPriv -3k $auth_key -3K $priv_key -u $user udp6:$ip 1.3.6.1.2.1.1.1.0
Я пытался повторить это в PySNMP, но кажется, что ключи не принимаются,Я чувствую, что параметры authKey
и privKey
класса UsmUserData на самом деле устанавливают фразы прохода auth и priv, похожие на флаги -A и -X net-snmp.
Я экспериментировал с изменениеммои ключи, которые представляют собой 32-символьные шестнадцатеричные строки, использующие различные функции в модуле binascii, но это похоже на лай неправильного дерева.Мой код уже работает с SNMPv2, но замена CommunityData
на UsmUserData
создает проблемы.
from pysnmp.hlapi import *
IP = '::1/128'
OID = '1.3.6.1.2.1.1.1.0'
USER = 'my_user'
AUTH, PRIV = '', '' # 32-character lowercase hex strings
error_indication, error_status, error_index, var_binds = next(
getCmd(SnmpEngine(),
UsmUserData(USER, authKey=AUTH, privKey=PRIV),
Udp6TransportTarget((IP, 161)),
ContextData(),
ObjectType(ObjectIdentity(OID)))
)
print(error_indication)
print([x[1].prettyPrint() for x in var_binds])
Вывод:
Wrong SNMP PDU digest
[]
Когда я изменяю команду, чтобы сделатьвызов SNMPv2 с CommunityData
, я получаю те же результаты, что и с net-snmp.Фактический вывод, который я получаю, - «Неверный дайджест SNMP PDU» и пустой var_binds
. Как заставить PySNMP эмулировать флаги -3k и -3K?