如何解析snmp4j

时间:2016-10-25 08:38:41

标签: snmp net-snmp snmp4j snmpd snmptrapd

我在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上输出一样? 我的设备上有许多陷阱oid。我应该把它们放在一个文件上并通过这个文件解析oid吗?或者我应该通过snmp4j加载mib?

有没有办法可以做到这一点?这个问题的最佳做法是什么?

提前致谢!

2 个答案:

答案 0 :(得分:1)

要根据MIB模块定义解析OID,您必须使用 SMI4J Mibble 等库或其他能够解析MIB文件的库(SMIv1 / SMIv2)格式)。

您还可以使用 NetDecision MIB Manager 等商业产品,它们允许您将多个MIB文件转换为XML格式的规范化文件。之后,您所要做的就是使用任何DOM解析器加载XML文件。无需解析复杂的ASN.1(SMI)结构并处理依赖关系。此外,您不必担心格式错误的MIB文件和错误处理。 enter image description here

答案 1 :(得分:0)

SNMP4J-SMI-PRO将直接与SNMP4J集成,并提供MIB解析功能。对象名称映射和值格式化的OID随时可用于已有的SNMP4J代码。