I create snmp trap receiver using snmp4j.我设法接收了 pdu 并对其进行了处理。我需要目标 IP 地址,因为我的机器有多个 IP 地址。我可以考虑两种方式:
- 在我的陷阱接收器中检索整个命令,即"snmpset -v 1 -c M xx.x.x.x 1.3.6.1.4.1.161.3.6.37.2.1.3.2 i 2",以便我可以通过删除其他字符串来获取 IP 地址。但我唯一能检索的只有变量、值和 pdu 类型。
- 使用方法检索目标 IP 地址。但找不到。我曾经使用过
event.getTransportMapping().getListenAddress()
但得到 0.0.0.0/161,因为我需要侦听许多 IP 地址。使用event.getPeerAddress()
但获取发件人计算机的 IP 地址。
真的很感谢任何形式的帮助。提前谢谢。
解决方式:
UdpAddress udpHostAdress = (UdpAddress) cmdRespEvent.getTransportMapping().getListenAddress();
String ipAdd = udpHostAdress.getInetAddress().getHostAddress();
System.out.println("Target IP = " + ipAdd);
如果您尝试处理陷阱接收器的安全性,那么您在这里使用 snmp v3 来处理这个问题是错误的。 v3 具有称为引擎 ID 的安全机制。