SNMP: snmp4j / snmpwalk 结果不同

3

我正在使用这个示例发送一个请求获取snmp节点

PDU pdu = new PDU();
pdu.add(new VariableBinding(new OID("1.3.6.1.2.1.1.1")));
pdu.add(new VariableBinding(new OID("1.3.6.1.2.1.1.9.1.2.1")));
pdu.setType(PDU.GETNEXT);

结果如下:

Linux pia 2.6.26-2-686 #1 SMP Thu Sep 16 19:35:51 UTC 2010 i686
1.3.6.1.6.3.11.3.1.1

使用监听器:

Received response PDU is: RESPONSE[requestID=307256023, errorStatus=Success(0), errorIndex=0, VBS[1.3.6.1.2.1.1.9.1.2.2 = 1.3.6.1.6.3.11.3.1.1]]

使用 snmpwalk 命令可以得到以下结果:

root@pia:~/workspace_c/SNMP# snmpwalk -v2c -c public localhost 1.3.6.1.2.1.1.1
SNMPv2-MIB::sysDescr.0 = STRING: Linux pia 2.6.26-2-686 #1 SMP Thu Sep 16 19:35:51 UTC 2010 i686

root@pia:~/workspace_c/SNMP# snmpwalk -v2c -c public localhost 1.3.6.1.2.1.1.9.1.2.1
SNMPv2-MIB::sysORID.1 = OID: SNMP-FRAMEWORK-MIB::snmpFrameworkMIBCompliance

为什么snmpwalk返回SNMP-FRAMEWORK-MIB::snmpFrameworkMIBCompliancesnmp4j1.3.6.1.6.3.11.3.1.1

为什么第一种情况下我得到了节点的名称,而在第二种情况下我得到了节点的编号?

更新: 啊哈,看来节点可以是OID、STRING、Timesticks对象:

  • 1.3.6.1.2.1.1.9.1.2.1 => OID: SNMP-FRAMEWORK-MIB::snmpFrameworkMIBCompliance
  • 1.3.6.1.2.1.1.9.1.3.1 => STRING: The SNMP Management Architecture MIB。
2个回答

3

这不是完全相同的吗?(SNMP OID可能以字符串或“点分数字”的形式表示 - 不同的表示方式,但指向树中完全相同的信息)。

来自MIBExplorer:

snmpMPDCompliance MODULE-COMPLIANCE STATUS current DESCRIPTION "The compliance statement for SNMP entities which implement the SNMP-MPD-MIB. "

    MODULE 
    MANDATORY-GROUPS {
                    snmpMPDGroup }

-- 1.3.6.1.6.3.11.3.1.1 -- ::= { snmpMPDMIBCompliances 1 }


谢谢。啊哈,实际上是一样的,但为什么第一个请求是作为字符串,而第二个请求以同样的方式书写,却指向了节点的数量?:-) - gaffcz

0

对于大多数应用程序,MIB对象的对象名称并不重要,可能会产生歧义。SMI仅要求对象名称在MIB模块内唯一,并跨所有IETF标准MIB规范唯一。

因此,最好的做法是尽可能使用点号表示法(例如“1.3.6.1.4.1”)。 SNMP4J默认情况下没有内置MIB解析器,因此提供了点号OID字符串。

但是,如果您想要使用由MIB规范定义的对象名称或其他值转换,只需添加 SNMP4J-SMI即可使用几行代码,并且可以在任何地方使用对象名称。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接