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
_______________________________________________
SNMP4J mailing list
[email protected]
http://lists.agentpp.org/mailman/listinfo/snmp4j

Reply via email to