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

问题描述 投票:0回答:1

我有以下成功的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密码短语,类似于net-snmp的-A和-X标志。

我正在尝试修改我的键,这是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
[]

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

python snmp pysnmp
1个回答
1
投票

-3k-3m选项在当代pysnmp API中不易实现。

但是,pysnmp依赖于vanilla MIB对象来处理所有事情,包括它自己的配置。这意味着如果SNMP-USER-BASED-SM-MIB(或任何其他MIB)中有一个对象拿着你需要的键 - 那个对象可以很容易地accessed and modified

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

© www.soinside.com 2019 - 2024. All rights reserved.