使用 PySNMP 获取陷阱发送者的 IP

Get trap sender's IP with PySNMP

我在 python 中使用 pysnmp 构建了一个小型 SNMP v3 陷阱接收器。在我们的网络中,snmp 引擎 ID 和 users/passwords 在不同的机器上是相同的。所以我需要 snmp 陷阱发件人 ip 地址来识别发送机器。 我怎样才能得到地址,pysnmp中有没有function/method?

我认为在 SNMP 中通常不鼓励依赖对等地址,因为可能 proxy/NAT/etc 介于两者之间。这可能解释了为什么在抽象 SNMP API 中不公开对等地址信息。

在 pysnmp 中获取对等地址,您可以使用 observer 功能:

# Callback function for receiving notifications
def cbFun(snmpEngine, stateReference, contextEngineId, contextName,
          varBinds, cbCtx):
    execContext = snmpEngine.observer.getExecutionContext(
        'rfc3412.receiveMessage:request'
    )

    print('Notification from %s:%s' % execContext['transportAddress'])

这里是 complete example.