我目前正在进行一个使用 SNMP4J API 通过 Java 构建 SNMP 代理和管理器的项目。
我创建了一个包含 3 列的 MOTable,然后尝试从客户端发送一组数据以在 MOTable 概念表中创建一个新行。
以下是我的客户端代码的摘录,它将变量绑定(bind)添加到 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);
其中 x = 1、2 或 3 的“.1.3.6.1.2.1.3.x”分别是我的表的第 1、2 和 3 列的 OID,其中分别包含一个 OctetString、Integer32 和第二个 Integer32 .
不幸的是,当我运行客户端时出现以下错误:
您知道这个错误是什么意思以及如何解决它以创建行吗?
java.lang.Exception: Error 'Inconsistent naming used' generated at: 1.3.6.1.2.1.3.1 = 192.168.1.12 at org.snmp4j.agent.request.SnmpRequest$SnmpSubRequest.requestStatusChanged(SnmpRequest.java:621) at org.snmp4j.agent.request.RequestStatus.fireRequestStatusChanged(RequestStatus.java:89) at org.snmp4j.agent.request.RequestStatus.setErrorStatus(RequestStatus.java:52) at org.snmp4j.agent.mo.DefaultMOTable.prepare(DefaultMOTable.java:601) at org.snmp4j.agent.CommandProcessor$SetHandler.prepare(CommandProcessor.java:830) at org.snmp4j.agent.CommandProcessor$SetHandler.processPdu(CommandProcessor.java:863) at org.snmp4j.agent.CommandProcessor$SetHandler.processPdu(CommandProcessor.java:780) at org.snmp4j.agent.CommandProcessor.processRequest(CommandProcessor.java:422) at org.snmp4j.agent.CommandProcessor.processRequest(CommandProcessor.java:384) at org.snmp4j.agent.CommandProcessor.dispatchCommand(CommandProcessor.java:340) at org.snmp4j.agent.CommandProcessor$Command.run(CommandProcessor.java:560) at org.snmp4j.agent.CommandProcessor.processPdu(CommandProcessor.java:163) at org.snmp4j.MessageDispatcherImpl.fireProcessPdu(MessageDispatcherImpl.java:675) at org.snmp4j.MessageDispatcherImpl.dispatchMessage(MessageDispatcherImpl.java:302) at org.snmp4j.MessageDispatcherImpl.processMessage(MessageDispatcherImpl.java:373) at org.snmp4j.MessageDispatcherImpl.processMessage(MessageDispatcherImpl.java:333) at org.snmp4j.transport.AbstractTransportMapping.fireProcessMessage(AbstractTransportMapping.java:76) at org.snmp4j.transport.DefaultUdpTransportMapping$ListenThread.run(DefaultUdpTransportMapping.java:423) at java.lang.Thread.run(Thread.java:745)
最佳答案
表示指定的对象不存在。您必须检查 PDU 中的错误索引以找出哪个变量 (SNMP varbind) 导致了问题。
关于java - SNMP4J : What does "Inconsistent naming used" error mean?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33439991/