如何使用 PySNMP 指定 auth/priv 键而不是密码?
How to specify auth/priv keys instead of pass phrases with PySNMP?
我有以下成功的 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 中复制它,但似乎密钥没有被接受。我感觉 UsmUserData class 的 authKey
和 privKey
参数实际上是在设置 auth 和 priv 密码短语,类似于 net-snmp 的 -A 和 -X 标志。
我尝试使用 binascii 模块中的各种函数修改我的密钥,这些密钥是 32 个字符的十六进制字符串,但这感觉就像找错了树。我的代码已经适用于 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
[]
当我修改命令以使用 CommunityData
执行 SNMPv2 调用时,我得到与使用 net-snmp 相同的结果。我得到的实际输出是 "Wrong SNMP PDU digest" 和一个空的 var_binds
。 如何让 PySNMP 模拟 -3k 和 -3K 标志?
-3k
和 -3m
选项在当代的 pysnmp API 中不容易实现。
但是,pysnmp 的一切都依赖普通 MIB 对象,包括它自己的配置。这意味着如果 SNMP-USER-BASED-SM-MIB (or any other MIB) holding the keys you need - that object can be easily accessed and modified.
中有一个对象
如果你想实现这个想法,GitHub issue 可能是处理它的好地方...
我有以下成功的 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 中复制它,但似乎密钥没有被接受。我感觉 UsmUserData class 的 authKey
和 privKey
参数实际上是在设置 auth 和 priv 密码短语,类似于 net-snmp 的 -A 和 -X 标志。
我尝试使用 binascii 模块中的各种函数修改我的密钥,这些密钥是 32 个字符的十六进制字符串,但这感觉就像找错了树。我的代码已经适用于 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
[]
当我修改命令以使用 CommunityData
执行 SNMPv2 调用时,我得到与使用 net-snmp 相同的结果。我得到的实际输出是 "Wrong SNMP PDU digest" 和一个空的 var_binds
。 如何让 PySNMP 模拟 -3k 和 -3K 标志?
-3k
和 -3m
选项在当代的 pysnmp API 中不容易实现。
但是,pysnmp 的一切都依赖普通 MIB 对象,包括它自己的配置。这意味着如果 SNMP-USER-BASED-SM-MIB (or any other MIB) holding the keys you need - that object can be easily accessed and modified.
中有一个对象如果你想实现这个想法,GitHub issue 可能是处理它的好地方...