如何为 snmp4j 解析陷阱消息的 mib
How to parse mibs for trap message for snmp4j
我在 Windows 上启用了 Snmptrap,我收到了来自远程设备的陷阱消息。以下描述结果。
2016-10-25 10:19:02 <UNKNOWN> [UDP: [172.16.11.250]:62451->[0.0.0.0]:0]:
DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (287374) 0:47:53.74 SNMPv2-MIB::snmpTrapOID.0 = OID: IF-MIB::linkDown IF-MIB::ifIndex.116 = INTEGER: 116
IF-MIB::ifAdminStatus.116 = INTEGER: up(1) IF-MIB::ifOperStatus.116 = INTEGER: down(2) IF-MIB::ifName.116 = STRING: ge-1/0/1
我也通过 snmp4j 收到了陷阱消息。以下是我的代码和结果。
Vector<VariableBinding> vbVect = event.getPDU().getVariableBindings();
for (VariableBinding vb : vbVect) {
System.out.println(vb.getOid() + " = " + vb.getVariable());
}
结果
1.3.6.1.2.1.1.3.0 = 1:27:14.38
1.3.6.1.6.3.1.1.4.1.0 = 1.3.6.1.6.3.1.1.5.3
1.3.6.1.2.1.2.2.1.1.116 = 116
1.3.6.1.2.1.2.2.1.7.116 = 1
1.3.6.1.2.1.2.2.1.8.116 = 2
1.3.6.1.2.1.31.1.1.1.1.116 = ge-1/0/1
我的问题是如何在 mib 解析后获取陷阱消息,就像 windows 上的输出一样?
我的设备上有很多 trap oid。我应该把它们放在一个文件中并通过这个文件解析 oid 吗?或者我应该通过 snmp4j 加载 mibs 吗?
有什么方法可以做到吗?这个问题的最佳实践是什么?
提前致谢!
要根据 MIB 模块定义解析 OID,您必须使用像 SMI4J、Mibble 或其他一些有能力的库解析 MIB 文件(SMIv1/SMIv2 格式)。
您还可以使用像 NetDecision MIB Manager 这样的商业产品,它允许您将多个 MIB 文件转换为 XML 格式的规范化文件。之后,您所要做的就是使用任何 DOM 解析器加载 XML 文件。无需解析复杂的 ASN.1 (SMI) 结构和处理依赖关系。此外,您不必担心格式错误的 MIB 文件和错误处理。
SNMP4J-SMI-PRO将直接与SNMP4J集成,提供MIB解析能力。 OID 到对象名称的映射和值格式化可以与现有的 SNMP4J 代码一起使用。
我在 Windows 上启用了 Snmptrap,我收到了来自远程设备的陷阱消息。以下描述结果。
2016-10-25 10:19:02 <UNKNOWN> [UDP: [172.16.11.250]:62451->[0.0.0.0]:0]:
DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (287374) 0:47:53.74 SNMPv2-MIB::snmpTrapOID.0 = OID: IF-MIB::linkDown IF-MIB::ifIndex.116 = INTEGER: 116
IF-MIB::ifAdminStatus.116 = INTEGER: up(1) IF-MIB::ifOperStatus.116 = INTEGER: down(2) IF-MIB::ifName.116 = STRING: ge-1/0/1
我也通过 snmp4j 收到了陷阱消息。以下是我的代码和结果。
Vector<VariableBinding> vbVect = event.getPDU().getVariableBindings();
for (VariableBinding vb : vbVect) {
System.out.println(vb.getOid() + " = " + vb.getVariable());
}
结果
1.3.6.1.2.1.1.3.0 = 1:27:14.38
1.3.6.1.6.3.1.1.4.1.0 = 1.3.6.1.6.3.1.1.5.3
1.3.6.1.2.1.2.2.1.1.116 = 116
1.3.6.1.2.1.2.2.1.7.116 = 1
1.3.6.1.2.1.2.2.1.8.116 = 2
1.3.6.1.2.1.31.1.1.1.1.116 = ge-1/0/1
我的问题是如何在 mib 解析后获取陷阱消息,就像 windows 上的输出一样?
我的设备上有很多 trap oid。我应该把它们放在一个文件中并通过这个文件解析 oid 吗?或者我应该通过 snmp4j 加载 mibs 吗?
有什么方法可以做到吗?这个问题的最佳实践是什么?
提前致谢!
要根据 MIB 模块定义解析 OID,您必须使用像 SMI4J、Mibble 或其他一些有能力的库解析 MIB 文件(SMIv1/SMIv2 格式)。
您还可以使用像 NetDecision MIB Manager 这样的商业产品,它允许您将多个 MIB 文件转换为 XML 格式的规范化文件。之后,您所要做的就是使用任何 DOM 解析器加载 XML 文件。无需解析复杂的 ASN.1 (SMI) 结构和处理依赖关系。此外,您不必担心格式错误的 MIB 文件和错误处理。
SNMP4J-SMI-PRO将直接与SNMP4J集成,提供MIB解析能力。 OID 到对象名称的映射和值格式化可以与现有的 SNMP4J 代码一起使用。