我有以下成功的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类的authKey
和privKey
参数实际上是在设置auth和priv密码短语,类似于netsnmp的-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])
输出:
^{pr2}$当我修改命令以使用CommunityData
执行SNMPv2调用时,得到的结果与使用netsnmp相同。我得到的实际输出是“错误的snmppdu摘要”和一个空的var_binds
。如何让PySNMP模拟-3k和-3k标志?
-3k
和-3m
选项在当代的pysnmpapi中并不容易实现。在但是,pysnmp对所有事情都依赖于vanilla MIB对象,包括它自己的配置。这意味着如果在SNMP-USER-BASED-SM-MIB(或任何其他MIB)中有一个对象持有您需要的密钥,那么这个对象很容易accessed and modified。在
如果你想追求这个想法,也许GitHub的问题会是一个很好的处理它的地方。。。在
相关问题 更多 >
编程相关推荐