我有一个使用 SNMP4J 发送 SNMP 陷阱的 Java 应用程序。问题是 OID 在陷阱正文中发送。我设置的所有数据都已成功发送,但在陷阱正文中。我希望 Oid 在陷阱报头中发送。
如何在 Trap header 中发送 Oid?
UdpAddress managerUdpAddress = new UdpAddress("address");
CommunityTarget ctarget = new CommunityTarget();
ctarget.setAddress(managerUdpAddress);
ctarget.setRetries(retryCount);
ctarget.setCommunity(new OctetString(community));
ctarget.setTimeout(timeout);
ctarget.setVersion(SnmpConstants.version2c);
PDU trap = new PDU();
OID oid = new OID(myOid);
trap.add(new VariableBinding(SnmpConstants.snmpTrapOID, oid));
trap.add(new VariableBinding(SnmpConstants.sysUpTime, new TimeTicks(5000)));
trap.add(new VariableBinding(SnmpConstants.sysDescr, new OctetString(
"System Description")));
trap.add(new VariableBinding(oid, new OctetString(message)));
DefaultUdpTransportMapping transport = new DefaultUdpTransportMapping();
Snmp snmp = new Snmp(transport);
snmp.notify(trap, ctarget);
当 UPS 发送 SNMP 陷阱时,OID 出现在 SNMP 陷阱报头中。以下是示例:
来自 UPS 的陷阱:
Mon Mar 18 04:13:18 2019 .
1.3.6.1.4.1.935.0.49
Normal "SNMP EVENT" x.x.x.x - UPS_212_bypass_ac_normal SNMP TRAP: Bypass AC Normal
来自JAVA的陷阱:
Mon Mar 18 05:25:36 2019
.0.00
Critical "SNMP EVENT" x.x.x.x - my application snmp errors: System Description General error. Size=2"
最佳答案
我通过添加以下代码来做到这一点:
trap.setType(PDU.TRAP);
trap.add(new VariableBinding(oid));
现在从 Java 发送的 SNMP 陷阱如下所示:
Thu Mar 21 15:16:51 2019 .1.3.6.1.6.3.1.1.7.1.6 Critical "SNMP EVENT" x.x.x.x - my application snmp errors: System Description General error. Size=2"
关于java - 在 SNMP 陷阱报头中发送 OID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55263531/