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

2024-06-23 19:05:50 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下成功的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类的authKeyprivKey参数实际上是在设置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标志?


Tags: key命令authvar标志errornetsnmpauthkey
1条回答
网友
1楼 · 发布于 2024-06-23 19:05:50

-3k-3m选项在当代的pysnmpapi中并不容易实现。在

但是,pysnmp对所有事情都依赖于vanilla MIB对象,包括它自己的配置。这意味着如果在SNMP-USER-BASED-SM-MIB(或任何其他MIB)中有一个对象持有您需要的密钥,那么这个对象很容易accessed and modified。在

如果你想追求这个想法,也许GitHub的问题会是一个很好的处理它的地方。。。在

相关问题 更多 >

    热门问题