[SNMP4J] java.lang.NullPointerException: Context engine ID must not be null
Frank Fock
fock at agentpp.com
Fri Aug 12 10:48:49 CEST 2016
Hi Philippe,
This issue has been fixed in SNMP4J-Agent and not SNMP4J.
Best regards,
Frank
Am 11.08.2016 um 11:53 schrieb FLORENT Philippe:
> So I finaly found this is clearly a bug in snmp4j
>
> http://oosnmp.net/pipermail/snmp4j/2016-May/005693.html
>
> which makes SNMP4J clearly unusable since tables and trees don't work
>
> please can you fix this bug ?
>
> -----Original Message-----
> From: FLORENT Philippe
> Sent: jeudi 11 août 2016 11:40
> To: 'snmp4j at agentpp.org'
> Cc: 'Frank Fock'
> Subject: RE: [SNMP4J] java.lang.NullPointerException: Context engine ID must not be null
>
> Apprently one need to sublass pdufactory,
>
> http://stackoverflow.com/questions/8069244/how-to-add-the-snmpv3-context-name-if-using-tableutils-gettable-in-snmp4j
>
> but how do I figure the context id string ?
>
> -----Original Message-----
> From: FLORENT Philippe
> Sent: jeudi 11 août 2016 11:18
> To: 'snmp4j at agentpp.org'
> Cc: 'Frank Fock'
> Subject: RE: [SNMP4J] java.lang.NullPointerException: Context engine ID must not be null
>
> I tried a getbulk table, but still that same bloody error
>
> final PDUFactory pduFactory = new DefaultPDUFactory(PDU.GETBULK);
> final TableUtils utils = new TableUtils(snmp, pduFactory);
>
> utils.getTable(target, new OID[]{ new OID(oid) }, null, null);
>
> Exception in thread "main" java.lang.NullPointerException: Context engine ID must not be null
> at org.snmp4j.ScopedPDU.setContextEngineID(ScopedPDU.java:69)
> at org.snmp4j.util.DefaultPDUFactory.applyContextInfoToScopedPDU(DefaultPDUFactory.java:114)
> at org.snmp4j.util.DefaultPDUFactory.createPDU(DefaultPDUFactory.java:99)
> at org.snmp4j.util.TableUtils$TableRequest.sendNextChunk(TableUtils.java:365)
> at org.snmp4j.util.TableUtils.getTable(TableUtils.java:116)
> at starrwarr.SnmpProber.getNextInt(SnmpProber.java:114)
> at starrwarr.Machine.<init>(Machine.java:28)
> at starrwarr.StarrWarr.<init>(StarrWarr.java:58)
> at starrwarr.StarrWarr.main(StarrWarr.java:114)
> Java Result: 1
>
>
>
> -----Original Message-----
> From: FLORENT Philippe
> Sent: jeudi 11 août 2016 11:04
> To: 'Frank Fock'
> Cc: snmp4j at agentpp.org
> Subject: RE: [SNMP4J] java.lang.NullPointerException: Context engine ID must not be null
>
> 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:fock at agentpp.com]
> Sent: jeudi 11 août 2016 10:26
> To: FLORENT Philippe
> Cc: snmp4j at 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.FLORENT at 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 at agentpp.org
>> https://oosnmp.net/mailman/listinfo/snmp4j
--
---
AGENT++
Maximilian-Kolbe-Str. 10
73257 Koengen, Germany
https://agentpp.com
Phone: +49 7024 8688230
Fax: +49 7024 8688231
More information about the SNMP4J
mailing list