Как указать ключи auth / priv вместо парольных фраз с PySNMP? - PullRequest
0 голосов
/ 25 апреля 2019

У меня есть следующая успешная команда 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?

1 Ответ

1 голос
/ 25 апреля 2019

Опции -3k и -3m нелегко реализовать в современном API pysnmp.

Однако pysnmp полагается на объекты MIB vanilla во всем, включая собственную конфигурацию.Это означает, что если в SNMP-USER-BASED-SM-MIB (или любом другом MIB) есть нужный вам объект, содержащий нужные вам ключи - этот объект может быть легко доступен и изменен .

Если вы хотите продолжить эту идею, возможно, проблема с GitHub будет хорошим местом для решения этой проблемы ...

...