gpt4 book ai didi

python - PYSNMP v3 与 CISCO

转载 作者:太空宇宙 更新时间:2023-11-03 21:14:16 25 4
gpt4 key购买 nike

我正在尝试通过 SNMP 从 ucs-6100 获得答案。

通过控制台:(模拟我的请求)

>>> snmpget -v3 -l authPriv -u usr-sha-aes -A authkey1 -X privkey1 -a SHA -x AES demo.snmplabs.com SNMPv2-MIB::sysDescr.0

我成功

但是当我使用 pysnmp 时(像这样)
from pysnmp.hlapi import *
resp = next(getCmd(SnmpEngine(),
UsmUserData('usr-sha-aes', 'authkey1', 'privkey1',
authProtocol=usmHMACSHAAuthProtocol,
privProtocol=usmAesCfb128Protocol),
UdpTransportTarget(('demo.snmplabs.com', 161)),
ContextData(),
ObjectType(ObjectIdentity('SNMPv2-MIB', 'sysDescr', 0)))
)

(带有这些参数的代码可以工作)

我总是得到答案:
Out[20]:(pysnmp.proto.errind.UnknownEngineID('Unknown SNMP engine ID encountered'),
0,
0,
[])

我认为这是因为协议(protocol)的配置。
是否可以不发送请求的引擎?
或任何其他设计。

提前致谢。
python 3.6
pysnmp 4.4.9

最佳答案

所以,我找到了它崩溃的地方。

如果您与平衡器打交道,您可能会遇到类似的问题。
描述:
当我们从带有“snmpget”的控制台通过/balancer_host/发送请求时,我们没有区别,并且我们清楚地从/host_1/或/host_2/得到响应(直接向 host_1/2 请求也总是成功,但在实际情况下我们没有已知主机是否为“balanser”,我们不知道哪些主机做出了响应。)

当我们通过/balancer/从带有“pysnmp”的脚本发送请求时,我们会收到错误“UnknownEngineID”,是的,我们可以尝试使用“snmp_engine.observer”获取正确的EngineID:

observer_context = {}
snmp_engine.observer.registerObserver(
lambda e, p, v, c: c.update(securityEngineId=v['securityEngineId']),
'rfc3412.prepareDataElements:internal',
cbCtx=observer_context)
auth_data = UsmUserData('non-existing-user')
next(getCmd(snmp_engine, auth_data,
transport_target, ContextData(), ObjectType(ObjectIdentity('SNMPv2-MIB', 'sysDescr', 0))))
print(observer_context['securityEngineId'].prettyPrint())

并创建正确的引擎,但我们仍然会遇到类似的问题,因为我们使用从/host_1/(例如)获得的 SnmpEngine(EngineID) 向/balancer_host/发送请求。
因此,来自观察者的测试请求正在工作,对数据的真实请求 - 不。
但我很想知道,请求在“snmpget”中是如何工作的——总是成功的。

有人有一些想法如何在没有 SnmpEngine 的情况下通过“平衡器”发送请求?

关于python - PYSNMP v3 与 CISCO,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54834451/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com