[SNMP4J] Problem with V3 get

J B moatas at gmail.com
Mon Feb 1 23:52:06 CET 2010


Passing a null for the privacy protocol fixed the problem...

On Mon, Feb 1, 2010 at 5:47 PM, J B <moatas at gmail.com> wrote:
> I can execute the following command successfully:
>
> snmpget -v 3 -u jmb -l authNoPriv -a MD5 -A snmpv3Eight localhost
> 1.3.6.1.2.1.1.1.0
>
> But I can not get the following code to run properly:
>
> import org.snmp4j.PDU;
> import org.snmp4j.ScopedPDU;
> import org.snmp4j.Snmp;
> import org.snmp4j.UserTarget;
> import org.snmp4j.event.ResponseEvent;
> import org.snmp4j.mp.MPv3;
> import org.snmp4j.mp.SnmpConstants;
> import org.snmp4j.security.AuthMD5;
> import org.snmp4j.security.PrivDES;
> import org.snmp4j.security.SecurityLevel;
> import org.snmp4j.security.SecurityModels;
> import org.snmp4j.security.SecurityProtocols;
> import org.snmp4j.security.USM;
> import org.snmp4j.security.UsmUser;
> import org.snmp4j.smi.OID;
> import org.snmp4j.smi.OctetString;
> import org.snmp4j.smi.UdpAddress;
> import org.snmp4j.smi.VariableBinding;
> import org.snmp4j.transport.AbstractTransportMapping;
> import org.snmp4j.transport.DefaultUdpTransportMapping;
>
> public class SNMPGet {
>
>        public static void main(String[] args) throws Exception {
>                AbstractTransportMapping transport = new DefaultUdpTransportMapping();
>                Snmp snmp = new Snmp(transport);
>                System.out.println(snmp);
>                USM usm = new USM(SecurityProtocols.getInstance(), new OctetString(MPv3
>                                .createLocalEngineID()), 0);
>                SecurityModels.getInstance().addSecurityModel(usm);
>                snmp.getUSM().addUser(
>                                new OctetString("jmb"),
>                                new UsmUser(new OctetString("jmb"), AuthMD5.ID,
>                                                new OctetString("snmpv3Eight"), PrivDES.ID, null));
>
>                UserTarget target = new UserTarget();
>                target.setSecurityLevel(SecurityLevel.AUTH_NOPRIV);
>                target.setSecurityName(new OctetString("jmb"));
>                target.setAddress(new UdpAddress("localhost/161"));
>                target.setRetries(1);
>                target.setTimeout(5000);
>                target.setVersion(SnmpConstants.version3);
>                snmp.listen();
>                PDU request = new ScopedPDU();
>                ScopedPDU scopedPDU = (ScopedPDU) request;
>                scopedPDU.setType(PDU.GET);
>                scopedPDU.add(new VariableBinding(new OID("1.3.6.1.2.1.1.1.0")));
>                ResponseEvent responseEvent;
>                long startTime = System.currentTimeMillis();
>                responseEvent = snmp.send(request, target);
>                if (responseEvent != null) {
>                        PDU response = responseEvent.getResponse();
>                        System.out.println("Received response after "
>                                        + (System.currentTimeMillis() - startTime) + " millis");
>                        System.out.println(response);
>                }
>        }
> }
>
>
> I get the following stack trace:
>
> Exception in thread "Timer-0" java.lang.NullPointerException
>        at org.snmp4j.security.AuthGeneric.passwordToKey(AuthGeneric.java:205)
>        at org.snmp4j.security.SecurityProtocols.passwordToKey(SecurityProtocols.java:303)
>        at org.snmp4j.security.USM.getUser(USM.java:271)
>        at org.snmp4j.security.USM.generateResponseMessage(USM.java:355)
>        at org.snmp4j.security.USM.generateRequestMessage(USM.java:215)
>        at org.snmp4j.mp.MPv3.prepareOutgoingMessage(MPv3.java:767)
>        at org.snmp4j.MessageDispatcherImpl.sendPdu(MessageDispatcherImpl.java:438)
>        at org.snmp4j.Snmp.sendMessage(Snmp.java:1063)
>        at org.snmp4j.Snmp$PendingRequest.run(Snmp.java:1606)
>        at java.util.TimerThread.mainLoop(Timer.java:512)
>        at java.util.TimerThread.run(Timer.java:462)
>
> Can anyone provide any pointers?
>
> Thanks!
>
> Birch
>



More information about the SNMP4J mailing list