I do a GET on a perfectly fine oid - works with snmpwalk (linux cli) - works as GET in Mib Browser (might do a walk too when I click on the GET button)
So I managed to get the data using snmp4j tables , there it works(at least with v 1.1) -----Original Message----- From: Frank Fock [mailto:f...@agentpp.com] Sent: jeudi 11 août 2016 14:42 To: FLORENT Philippe Cc: snmp4j@agentpp.org Subject: Re: [SNMP4J] java.lang.NullPointerException: Context engine ID must not be null Hi Philippe, It's how I wrote. You are not specifying the instance sub-identifiers. A GETNEXT will *never* return a noSuchInstance error! (If the agent is SNMP standard conform) Best regards Frank > Am 11.08.2016 um 11:03 schrieb FLORENT Philippe > <philippe.flor...@edenred.com>: > > Please help, I am really struggling with this, that OID exists, no matter I > use GT or GETNEXT, it return "no such instance" > > If I look the infos on that oid : .1.3.6.1.2.1.4.20.1.2 > > Walk: > ------- > IP-MIB::ipAdEntIfIndex.127.0.0.1 = INTEGER: 1 > IP-MIB::ipAdEntIfIndex.192.168.1.128 = INTEGER: 2 > > snmptranslate -Td : > ------------------------- > IP-MIB::ipAdEntIfIndex > ipAdEntIfIndex OBJECT-TYPE > -- FROM IP-MIB > SYNTAX INTEGER (1..2147483647) > MAX-ACCESS read-only > STATUS deprecated > DESCRIPTION "The index value which uniquely identifies the interface to > which this entry is applicable. The interface identified by > a particular value of this index is the same interface as > identified by the same value of the IF-MIB's ifIndex." > ::= { iso(1) org(3) dod(6) internet(1) mgmt(2) mib-2(1) ip(4) > ipAddrTable(20) ipAddrEntry(1) 2 } > > > > > > -----Original Message----- > From: Frank Fock [mailto:f...@agentpp.com] > Sent: jeudi 11 août 2016 10:26 > To: FLORENT Philippe > Cc: snmp4j@agentpp.org > Subject: Re: [SNMP4J] java.lang.NullPointerException: Context engine > ID must not be null > > Hi, > If walk (which is a GETNEXT in fact) and GET behave differently then most > likely you are using the wrong OID (wrong instance identifier). Sometimes the > agent is broken too. > In your case, you should put the Snmp instance in listen mode to receive > answers from the agent. See FAQ for details. > Best regards > Frank > >> Am 11.08.2016 um 09:29 schrieb FLORENT Philippe >> <philippe.flor...@edenred.com>: >> >> Hello everyone, >> >> >> - Doing a get on some OID give me "unkown instance" although they >> work with snmpwalk on the command line and GET works with mib explorer >> >> >> >> - So I try to implement an snmp walk in snmp4j but I keep getting >> that error >> >> Here is the code >> >> I tried to use request.getContextEngineID(), but it is also null >> >> public class SnmpProber >> { >> private Snmp snmp; >> private UserTarget target; >> >> private byte[] authEngineId0=null; >> >> public SnmpProber(String ipAddress,String port,String userName,String >> authPass,String privPass) >> { >> try >> { >> Address targetAddress = >> GenericAddress.parse("udp:"+ipAddress+"/"+port); >> TransportMapping transport = new DefaultUdpTransportMapping(); >> snmp = new Snmp(transport); >> USM usm = new USM(SecurityProtocols.getInstance(),new >> OctetString(MPv3.createLocalEngineID()), 0); >> SecurityModels.getInstance().addSecurityModel(usm); >> transport.listen(); >> >> target = new UserTarget(); >> target.setAddress(targetAddress); >> target.setRetries(1); >> target.setTimeout(5000); >> target.setVersion(SnmpConstants.version3); >> target.setSecurityLevel(SecurityLevel.AUTH_PRIV); >> target.setSecurityName(new OctetString(userName)); >> >> authEngineId0 = >> snmp.discoverAuthoritativeEngineID(target.getAddress(), 5000); >> >> if(authEngineId0==null) >> System.out.println("cannot connect"); >> else >> { >> // add user to the USM >> UsmUser usmUser=new UsmUser(new OctetString(userName), >> AuthSHA.ID, >> new OctetString(authPass), >> PrivAES128.ID, >> new OctetString(privPass)); >> >> snmp.getUSM().addUser(new OctetString("v3DefaultUser"), >> new OctetString(authEngineId0), >> usmUser); >> } >> } catch (IOException ex) { >> Logger.getLogger(SnmpProber.class.getName()).log(Level.SEVERE, >> null, ex); >> } >> } >> >> public boolean isOk() >> { >> return authEngineId0!=null; >> } >> >> class WalkCounts { >> public int requests; >> public int objects; >> } >> >> public List<VariableBinding> walk(String oid) >> { >> final List<VariableBinding> result; >> result = new LinkedList<VariableBinding>(); >> ScopedPDU request; >> request = new ScopedPDU(); >> request.setType(PDU.GETNEXT); >> >> request.add(new VariableBinding(new OID(oid))); >> >> request.setNonRepeaters(0); >> >> OID rootOID = request.get(0).getOid(); >> >> final WalkCounts counts = new WalkCounts(); >> final long startTime = System.currentTimeMillis(); >> TreeUtils treeUtils = new TreeUtils(snmp, new >> DefaultPDUFactory()); >> >> TreeListener treeListener = new TreeListener() >> { >> public boolean next(TreeEvent e) { >> counts.requests++; >> >> if (e.getVariableBindings() != null) { >> VariableBinding[] vbs = e.getVariableBindings(); >> counts.objects += vbs.length; >> for (int i = 0; i < vbs.length; i++) { >> if (result != null) { >> result.add(vbs[i]); >> } >> System.out.println(vbs[i].toString()); >> } >> } >> return true; >> } >> >> @Override >> public void finished(TreeEvent e) { >> if ((e.getVariableBindings() != null) >> && (e.getVariableBindings().length > 0)) { >> next(e); >> } >> >> System.out.println("Total requests sent: "+ >> counts.requests); >> System.out.println("Total objects received: "+ counts.objects); >> System.out.println("Total walk time: "+ >> (System.currentTimeMillis() - startTime)+ " milliseconds"); >> >> if (e.isError()) { >> System.err.println("The following error occurred during >> walk:"); >> System.err.println(e.getErrorMessage()); >> } >> synchronized (this) { >> this.notify(); >> } >> } >> >> @Override >> public boolean isFinished() { >> return true; >> } >> }; >> >> synchronized (treeListener) >> { >> treeUtils.getSubtree(target, rootOID, null, treeListener); >> <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< exception here >> try >> { >> treeListener.wait(); >> } >> catch (InterruptedException ex) >> { >> System.out.println("Tree retrieval interrupted: "+ex); >> Thread.currentThread().interrupt(); >> } >> } >> >> return result; >> } >> >> public void Release() >> { >> try { >> snmp.close(); >> } catch (IOException ex) { >> Logger.getLogger(SnmpProber.class.getName()).log(Level.SEVERE, >> null, ex); >> } >> } >> } >> >> >> >> >> _______________________________________________ >> SNMP4J mailing list >> SNMP4J@agentpp.org >> https://oosnmp.net/mailman/listinfo/snmp4j > _______________________________________________ SNMP4J mailing list SNMP4J@agentpp.org https://oosnmp.net/mailman/listinfo/snmp4j