【发布时间】:2017-11-08 04:49:22
【问题描述】:
我正在实现 snmpv3 的 pysnmp 代码,试图将陷阱发送到我网络中的机器。我可以看到在 Wireshark 中可以看到陷阱,但它没有出现在我的任何陷阱接收器中。代码如下:
from pysnmp.hlapi import *
errorIndication, errorStatus, errorIndex, varBinds = next(
sendNotification(
SnmpEngine(OctetString(hexValue='8000000001020304')),
UsmUserData('usr', authKey='authh', privKey='privv',
authProtocol=usmHMACSHAAuthProtocol,
privProtocol=usmAesCfb128Protocol),
UdpTransportTarget('192.168.1.79',162),
ContextData(),
'trap',
NotificationType(ObjectIdentity('SNMPv2-MIB', 'authenticationFailure'))
)
)
if errorIndication:
print(errorIndication)
如果我删除 authKey、privKey、authProtocol 和 privProtocol,我可以看到陷阱接收器中接收到的陷阱,但是当我将它们全部放入时,我看不到陷阱。
我的问题是:
- ubuntu 是否需要打开 161 和 162 端口才能让 windows 机器接收?
- 即使使用硬编码的引擎 ID,我也可以发送无需身份验证的陷阱,但在完全身份验证的情况下是否需要正确的引擎 ID?这就是陷阱没有出现的原因吗?如果是这样,有人可以指导我找到接收系统的引擎 ID 吗?
- 我们可以肯定地说,既然 Wireshark 清楚地看到了陷阱,那么它只是在陷阱接收器上进行配置以显示陷阱吗?
请帮帮我。
谢谢。
【问题讨论】:
标签: python-2.7 mib pysnmp pyasn1 asn.1