我正在使用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::snmpFrameworkMIBCompliance
和snmp4j
1.3.6.1.6.3.11.3.1.1
?
为什么我在第一种情况下得到了节点的名称,在第二种情况下得到了节点的数量?
更新 啊哈,似乎节点可以是OID,STRING,Timesticks对象:
答案 0 :(得分:3)
不完全一样吗? (SNMP OID可以是字符串形式或“带点的数字” - 不同的表示形式,但指向树中完全相同的信息)。
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几行代码即可,您可以随意使用对象名称。