SNMP4J:SNMP Walk提供java.lang.NullPointerException:上下文引擎ID不能为null
我使用SNMP4J在OID上执行SNMPv3漫游,但我得到以下错误SNMP4J:SNMP Walk提供java.lang.NullPointerException:上下文引擎ID不能为null,java,snmp4j,Java,Snmp4j,我使用SNMP4J在OID上执行SNMPv3漫游,但我得到以下错误 java.lang.NullPointerException:上下文引擎ID不能为null 我能够从SNMPv1成功获得响应,只有v3给出了这个错误。非常感谢您在这方面的任何帮助 SNMP4J版本:2.5.3我能够在不使用ContextEngineID或ContextName的情况下让它工作 我在创建DefaultPDUFactory时没有指定PDUType,默认构造函数使用PDU.GET作为PDUType。在阅读TreeUti
java.lang.NullPointerException:上下文引擎ID不能为null 我能够从SNMPv1成功获得响应,只有v3给出了这个错误。非常感谢您在这方面的任何帮助
SNMP4J版本:2.5.3我能够在不使用ContextEngineID或ContextName的情况下让它工作 我在创建DefaultPDUFactory时没有指定PDUType,默认构造函数使用PDU.GET作为PDUType。在阅读TreeUtils.getSubtree注释时,该注释提到“从指定目标同步获取具有GETNEXT(SNMPv1)或GETBULK(SNMP2c,SNMPv3)操作的子树。”我意识到我必须将PDUType设置为GETBULK 在创建DefaultPDUFactory对象时,将PDUType设置为GETBULK之后,我能够使用SNMPv3成功地进行“漫游”
DefaultPDUFactory defaultPDUFactory = new DefaultPDUFactory(PDU.GETBULK);
TreeUtils treeUtils = new TreeUtils(snmp, defaultPDUFactory);
events = treeUtils.getSubtree(getV3Target(), oid)
“上下文引擎ID不得为空”,因此请提供非空的上下文引擎ID。可能的提示:
ScopedPDU#setContextEngineID(OctetString)
我可以从SNMP浏览器执行SNMP v3漫游,而无需使用ContextEngineID或ContextName。我可以在没有ContextEngineID和ContextName的情况下使用getBulk不知道为什么只有“Walk”需要它我在其他地方读到了这样一条注释--“如果没有提供上下文引擎ID,则使用安全引擎ID。”我的代码是OctetString localEngineId=new OctetString(MPv3.createLocalEngineID());USM USM=new USM(SecurityProtocols.getInstance(),localEngineId,0);SecurityModels.getInstance().addSecurityModel(usm);snmp.getUSM().addUser(v3Username,新的UsmUser(v3Username,v3AuthProtocol,v3AuthPhrase,v3PrivProtocol,v3PrivPhrase));因为我在散步,所以我没有使用ScopedPDU设置上下文ID或上下文名称。DefaultPDUFactory DefaultPDUFactory=新的DefaultPDUFactory();TreeUtils TreeUtils=新树(snmp,defaultPDUFactory);events=treeUtils.getSubtree(getV3Target(),oid);我真的被困在这件事上了,有人在这件事上运气好吗?。。。非常感谢你的帮助