我有一个使用SNMP4J发送SNMP陷阱的java应用程序。问题是OID是在陷阱体中发送的。我正在设置的所有数据都已成功发送,但是在陷阱体中。我希望Oid被发送到陷阱头。
如何在Trap标题中发送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
正常“SNMP EVENT”x.x.x.x - UPS_212_bypass_ac_normal SNMP陷阱:旁路AC正常
来自JAVA的陷阱:
Mon Mar 18 05:25:36 2019
.0.00
关键“SNMP EVENT”x.x.x.x - 我的应用程序snmp错误:系统描述一般错误。大小= 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关键“SNMP EVENT”x.x.x.x - 我的应用程序snmp错误:系统描述一般错误。大小= 2"
SNMP TRAP格式具有RFC 1157或RFC 3412中定义的固定结构(在SNMPv3的情况下)。该结构由报头和PDU(分组数据单元)组成。 PDU基本上是一组所谓的变量绑定。每个绑定都有OID,语法和值。因此,您只能更改PDU部件。标头结构无法更改。