SNMP4J:"使用的命名不一致"错误意味着?

时间:2015-10-30 15:52:32

标签: java snmp mib snmp4j

我目前正在使用SNMP4J API构建使用Java的SNMP代理和管理器的项目。

我创建了一个包含3列的MOTable,然后尝试从客户端发送一个集合,以在MOTable概念表中创建一个新行。

以下是我的客户端代码的摘录,它将变量绑定添加到PDU,然后将SNMP SET发送给代理:

final static OID[] customTable = new OID[]{new OID(".1.3.6.1.2.1.3.1"),
                                           new OID(".1.3.6.1.2.1.3.2"),
                                           new OID(".1.3.6.1.2.1.3.3")};
PDU customTablePDU = new PDU();
customTablePDU.addAll(new VariableBinding[]{new VariableBinding(customTable[0],new OctetString("192.168.1.12")),
            new VariableBinding(customTable[1],new Integer32(0)),
            new VariableBinding(customTable[2],new Integer32(100))});
ResponseEvent customTableResponse = customSnmp.set(customTablePDU, comtarget);

" .1.3.6.1.2.1.3.x" x = 1,2或3分别是我的表的第1,2和3列的OID,它们分别包含OctetString,Integer32和第二个Integer32。

不幸的是,当我运行客户端时出现以下错误:

您知道这个错误意味着什么以及如何解决它以创建一行吗?

  

java.lang.Exception:错误'使用的命名不一致'生成于:   1.3.6.1.2.1.3.1 = 192.168.1.12 at org.snmp4j.agent.request.SnmpRequest $ SnmpSubRequest.requestStatusChanged(SnmpRequest.java:621)     在   org.snmp4j.agent.request.RequestStatus.fireRequestStatusChanged(RequestStatus.java:89)     在   org.snmp4j.agent.request.RequestStatus.setErrorStatus(RequestStatus.java:52)     在   org.snmp4j.agent.mo.DefaultMOTable.prepare(DefaultMOTable.java:601)     在   org.snmp4j.agent.CommandProcessor $ SetHandler.prepare(CommandProcessor.java:830)     在   org.snmp4j.agent.CommandProcessor $ SetHandler.processPdu(CommandProcessor.java:863)     在   org.snmp4j.agent.CommandProcessor $ SetHandler.processPdu(CommandProcessor.java:780)     在   org.snmp4j.agent.CommandProcessor.processRequest(CommandProcessor.java:422)     在   org.snmp4j.agent.CommandProcessor.processRequest(CommandProcessor.java:384)     在   org.snmp4j.agent.CommandProcessor.dispatchCommand(CommandProcessor.java:340)     在   org.snmp4j.agent.CommandProcessor $ Command.run(CommandProcessor.java:560)     在   org.snmp4j.agent.CommandProcessor.processPdu(CommandProcessor.java:163)     在   org.snmp4j.MessageDispatcherImpl.fireProcessPdu(MessageDispatcherImpl.java:675)     在   org.snmp4j.MessageDispatcherImpl.dispatchMessage(MessageDispatcherImpl.java:302)     在   org.snmp4j.MessageDispatcherImpl.processMessage(MessageDispatcherImpl.java:373)     在   org.snmp4j.MessageDispatcherImpl.processMessage(MessageDispatcherImpl.java:333)     在   org.snmp4j.transport.AbstractTransportMapping.fireProcessMessage(AbstractTransportMapping.java:76)     在   org.snmp4j.transport.DefaultUdpTransportMapping $ ListenThread.run(DefaultUdpTransportMapping.java:423)     在java.lang.Thread.run(Thread.java:745)

1 个答案:

答案 0 :(得分:1)

这意味着指定的对象不存在。您必须检查PDU 中的错误索引,以找出导致问题的变量(SNMP varbind)。