[SNMP4J] Problem in the code

Venkat Krishnan svkrishnan70 at gmail.com
Sat May 29 09:06:29 CEST 2010


Hi

I have written a code in Java which gives me a null response when i do a
getNext.

I have checked this in wireshark  also.

My SnmpgetNext command is given like this :

*snmpgetnext -v 3 -u manager2 -l authPriv -a MD5 -A password321 -x  password
-X DES <IP> , <OID>.*

Where do i make wrong. Can you please help me on this.


import java.io.IOException;
import java.util.List;
import java.util.Vector;

import org.snmp4j.Snmp;
import org.snmp4j.TransportMapping;
import org.snmp4j.CommunityTarget;
import org.snmp4j.PDU;
import org.snmp4j.UserTarget;
import org.snmp4j.Session;
import org.snmp4j.ScopedPDU;
import org.snmp4j.event.ResponseEvent;
import org.snmp4j.mp.SnmpConstants;
import org.snmp4j.mp.MPv3;
import org.snmp4j.mp.MessageProcessingModel;
import org.snmp4j.smi.Address;
import org.snmp4j.security.SecurityLevel;
import org.snmp4j.smi.GenericAddress;
import org.snmp4j.security.SecurityProtocols;
import org.snmp4j.security.*;
import org.snmp4j.smi.OID;
import org.snmp4j.security.UsmUser;
import org.snmp4j.smi.OctetString;
import org.snmp4j.event.ResponseEvent;
import org.snmp4j.security.*;
import org.snmp4j.security.AuthMD5;
import org.snmp4j.security.PrivDES;
import org.snmp4j.smi.VariableBinding;
import org.snmp4j.transport.*;
import org.snmp4j.util.DefaultPDUFactory;
import org.snmp4j.util.TableEvent;
import org.snmp4j.util.TableUtils;

public class Test1
{
 /*
 *  Class variable declarations
 */
PDU requestPDU = null;
Snmp snmp = null;
CommunityTarget target = null;
String responseString = null;
TransportMapping  transport;
OctetString username = new OctetString("manager2");
OctetString authname = new OctetString("password321");
OctetString Privname = new OctetString("password321");
ResponseEvent response;
USM usm;

/*
 *  Main method; point of execution start.
 */
public static void main(String[] args) throws IOException
{
 Test1 t = new Test1();

}


 public  Test1() throws IOException

{
 //System.out.println("I am inside test1 function");
 Address targetAddress=GenericAddress.parse("udp:10.130.157.200/161");
 System.out.println("The value of targetAddress is"+ targetAddress);
 transport = new DefaultUdpTransportMapping();
 Snmp snmp;
 snmp = new Snmp(transport);
 byte[] localEngineID =
((MPv3)snmp.getMessageProcessingModel(MessageProcessingModel.MPv3)).createLocalEngineID();
 //System.out.println(localEngineID);
 USM usm = new USM(SecurityProtocols.getInstance(),new
OctetString(localEngineID),0);
 usm.removeAllUsers();
 //System.out.println("I am here");
 SecurityModels.getInstance().addSecurityModel(usm);
 snmp.setLocalEngine(localEngineID,0,0);
 UsmUser usmuser = new
UsmUser(username,AuthMD5.ID,authname,PrivDES.ID,Privname,new
OctetString(localEngineID));
 //System.out.println("The value of user is \n"+usmuser);
 usm.addUser(username,null,usmuser);
 snmp.getUSM().addUser(username,usmuser);
 //System.out.println("2nd here");

  ScopedPDU requestPDU = new ScopedPDU();
 //PDU pdu = new ScopedPDU();
  requestPDU.add(new VariableBinding(new
OID("1.3.6.1.4.1.6486.800.1.2.1.8.1.1.1.1.1.")));
  requestPDU.setErrorIndex(0);
  requestPDU.setErrorStatus(0);
  requestPDU.setMaxRepetitions(3);
  requestPDU.setType(PDU.GETNEXT);
  //Address targetAddress = new UdpAddress("127.0.0.1/161");
  UserTarget target = new UserTarget();
          target.setAddress(targetAddress);
          target.setRetries(1);
  target.setSecurityLevel(SecurityLevel.AUTH_PRIV);
  target.setSecurityModel(SecurityModel.SECURITY_MODEL_USM);
          target.setTimeout(5000);
          target.setVersion(SnmpConstants.version3);
          snmp.listen();
  System.out.println("The value of requestPDU is \n"+ requestPDU);
  System.out.println("The value of Target is \n"+ target);



  ResponseEvent response = snmp.send(requestPDU,target);
  PDU responsePDU = response.getResponse();
  if (responsePDU != null)
  {
  String result =
responsePDU.getVariableBindings().firstElement().toString();
   if(result.contains("="))
{
  int len = result.indexOf("=");
  result = result.substring(len+1,result.length());
  System.out.println("The value of responsePDU is "+ result);

}
   }
   else

   {

  System.out.println("Timed out");
           }
  //Address PeerAddress = response.getPeerAddress();
  //System.out.println("The value of PeerAddress " + PeerAddress);
 snmp.close();

}
 }


Regards

Venkata Krishnan.S.



More information about the SNMP4J mailing list