Passing a null for the privacy protocol fixed the problem...
On Mon, Feb 1, 2010 at 5:47 PM, J B <moa...@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 > _______________________________________________ SNMP4J mailing list SNMP4J@agentpp.org http://lists.agentpp.org/mailman/listinfo/snmp4j