我目前正在使用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)
答案 0 :(得分:1)
这意味着指定的对象不存在。您必须检查PDU 中的错误索引,以找出导致问题的变量(SNMP varbind)。