使用 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.
我在 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.