SNMP:snmp4j / snmpwalk结果不同

时间:2012-04-23 09:49:52

标签: java snmp snmp4j

我正在使用this example发送snmp nodes的请求:

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::snmpFrameworkMIBCompliancesnmp4j 1.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 :SNMP管理架构MIB。

2 个答案:

答案 0 :(得分:3)

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

MIBExplorer:

  

snmpMPDCompliance MODULE-COMPLIANCE           状态当前           描述                  “SNMP实体的合规声明                   实现SNMP-MPD-MIB。                   “

    MODULE 
    MANDATORY-GROUPS {
                    snmpMPDGroup }
     

- 1.3.6.1.6.3.11.3.1.1 - :: = {snmpMPDMIBCompliances 1}

答案 1 :(得分:0)

对于大多数应用程序,MIB对象的对象名称不相关,可能是不明确的。 SMI仅要求对象名称在MIB模块内和所有IETF标准MIB规范中都是唯一的。

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

但是,如果您想要通过MIB规范定义对象名称或其他值转换,只需添加SNMP4J-SMI几行代码即可,您可以随意使用对象名称。