[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