【问题标题】:PySNMP: Receiving V3 Traps - Engine IDPySNMP:接收 V3 陷阱 - 引擎 ID
【发布时间】:2019-12-17 14:00:18
【问题描述】:

我们曾经使用 PySNMP 版本 4.3.1 来接收 SNMP V3 陷阱,它运行良好。 最近我们升级到了4.4.12版本,已经没有收到trap了。

我调试了这个问题,发现在 service.py 第 759 行对 __getUserInfo 的调用抛出了一个异常:

        # 3.2.4
        try:
            (usmUserName,
             usmUserSecurityName,
             usmUserAuthProtocol,
             usmUserAuthKeyLocalized,
             usmUserPrivProtocol,
             usmUserPrivKeyLocalized) = self.__getUserInfo(
                snmpEngine.msgAndPduDsp.mibInstrumController,
                msgAuthoritativeEngineId, msgUserName
            )

我认为这是因为陷阱中的引擎 ID 与我为接收陷阱而创建的用户的引擎 ID 不同。

在这个question 中,答案是为接收用户和陷阱发送者使用相同的引擎 ID。

如果是这样,为什么它在 PySNMP 版本 4.3.1 中有效?这是图书馆的错误吗?引擎 ID 匹配真的不是强制性的吗?

【问题讨论】:

    标签: pysnmp snmp-trap


    【解决方案1】:

    使用 SNMPv3 安全模型,发出 SNMP TRAP 的 SNMP 实体的 SNMP 引擎 ID(所谓的权威引擎 ID)必须为接收方所知。这是因为 TRAP 通信的单向特性导致无法在通话的 SNMP 实体之间交换 SNMP 引擎 ID。

    不幸的是,在这方面 pysnmp 中有 a bug - 这可能解释了为什么它以前对你有用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-02-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-24
      相关资源
      最近更新 更多