Python 如何使用PySNMP指定auth/priv密钥而不是传递短语?

Python 如何使用PySNMP指定auth/priv密钥而不是传递短语?,python,snmp,pysnmp,Python,Snmp,Pysnmp,我有以下成功的net snmp命令: snmpget-v3-l authPriv-3k$auth_key-3k$priv_key-u$user udp6:$ip 1.3.6.1.2.1.1.0 我一直试图在PySNMP中复制这一点,但似乎不接受密钥。我感觉到UsmUserData类的authKey和privKey参数实际上是在设置auth和priv pass短语,类似于netsnmp的-A和-X标志 我曾经尝试过使用binascii模块中的各种函数修改我的键,这些键是32个字符的十六进制字符串,

我有以下成功的net snmp命令:

snmpget-v3-l authPriv-3k$auth_key-3k$priv_key-u$user udp6:$ip 1.3.6.1.2.1.1.0

我一直试图在PySNMP中复制这一点,但似乎不接受密钥。我感觉到UsmUserData类的
authKey
privKey
参数实际上是在设置auth和priv pass短语,类似于netsnmp的-A和-X标志

我曾经尝试过使用binascii模块中的各种函数修改我的键,这些键是32个字符的十六进制字符串,但这感觉像是找错了方向。我的代码已经可以使用SNMPv2了,但是将
CommunityData
替换为
UsmUserData
会产生问题

从pysnmp.hlapi导入*
IP='::1/128'
OID='1.3.6.1.2.1.1.1.0'
用户='我的用户'
AUTH,PRIV='',#32个字符的小写十六进制字符串
错误指示、错误状态、错误索引、变量绑定=下一步(
getCmd(SnmpEngine(),
UsmUserData(用户,authKey=AUTH,privKey=PRIV),
Udp6TransportTarget((IP,161)),
ContextData(),
对象类型(对象身份(OID)))
)
打印(错误指示)
打印([x[1]。变量绑定中x的prettyPrint())
输出:

Wrong SNMP PDU digest
[]

当我修改命令以使用
CommunityData
执行SNMPv2调用时,得到的结果与使用net-snmp时相同。我得到的实际输出是“错误的SNMP PDU摘要”和一个空的
var\u binds
如何让PySNMP模拟-3k和-3k标志?

当前的PySNMP API中不容易实现
-3k
-3m
选项

然而,pysnmp依赖于普通MIB对象来完成一切,包括它自己的配置。这意味着,如果在(或任何其他MIB)中有一个对象持有您需要的密钥,那么该对象可以很容易地保存

如果你想追求这个想法,可能是一个GitHub的问题将是一个很好的地方来处理它