使用 tcpdump 收集并在wireshark 中查看时,可以正确接收和解码陷阱消息。
但是使用 pysnmp lib,出现以下错误:
2023-04-11 11:55:54,792 pysnmp:processIncomingMsg:scopedPDU 解码器失败
套装版
bcrypt 3.2.0 证书 2022.12.7 cffi 1.14.4 密码学38.0.1 网络米科 3.2.0 帕拉米科 2.7.2 点 23.0.1 层数 3.11 pyasn1 0.4.8 pycparser 2.20 pycrypto 2.6.1 pycryptodomex 3.15.0 皮尔兹玛 0.5.0 PyNaCI 1.4.0 pyOpenSSL 22.1.0 pyserial 3.5 pysmi 0.3.4 pysnmp 4.4.12 PySocks 1.7.1 python-dateutil 2.8.1 皮茨 2020.4 pyvmomi 8.0.0.1.2 PyYAML 5.3.1
我尝试了以下所有链接中提供的解决方案,但问题仍然没有解决:
https://github.com/etingof/pysnmp/issues/285(python -c'从Cryptodome.Cipher导入AES')
https://sourceforge.net/p/pysnmp/discussion/46667/thread/623edabb/(我安装并尝试过的pycrypto不存在)
SNMP v3 TRAP 是一个相当漫长的仪式
snmpEngine = SnmpEngine(OctetString(hexValue="8000000001020304"))
errorIndication, errorStatus, errorIndex, varBinds = await sendNotification(
snmpEngine,
UsmUserData("usr-md5-des", "authkey1", "privkey1"),
UdpTransportTarget(("localhost", MANAGER_PORT)),
ContextData(),
"trap",
NotificationType(ObjectIdentity("IF-MIB", "linkDown")),
)
snmpEngine.transportDispatcher.closeDispatcher()
# user: usr-md5-des, auth: MD5, priv DES, securityEngineId: 8000000001020304
# this USM entry is used for TRAP receiving purposes
config.addV3User(
snmpEngine,
"usr-md5-des",
config.usmHMACMD5AuthProtocol,
"authkey1",
config.usmDESPrivProtocol,
"privkey1",
securityEngineId=v2c.OctetString(hexValue="8000000001020304"),
)
如果你错过了其中一个,它根本就不起作用。