[SNMP4J] Need help:Unable to run sample snmp code with OIDs
anshul gupta
anshul.gupta14589 at yahoo.in
Thu Feb 17 13:33:38 CET 2011
Hi,
I have one more code the output is coming NULL for it i dont why.Please if u can help me on this and the output language is not understandable
import java.io.IOException;
import org.snmp4j.*;
import org.snmp4j.smi.Address;
import org.snmp4j.CommandResponder;
import org.snmp4j.CommandResponderEvent;
import org.snmp4j.CommunityTarget;
import org.snmp4j.PDU;
import org.snmp4j.ScopedPDU;
import org.snmp4j.Snmp;
import org.snmp4j.TransportMapping;
import org.snmp4j.UserTarget;
import org.snmp4j.event.ResponseEvent;
import org.snmp4j.event.ResponseListener;
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.Address;
import org.snmp4j.smi.GenericAddress;
import org.snmp4j.smi.OID;
import org.snmp4j.smi.OctetString;
import org.snmp4j.smi.VariableBinding;
import org.snmp4j.transport.DefaultUdpTransportMapping;
import org.snmp4j.Snmp;
import org.snmp4j.CommunityTarget;
public class Main
{
public static void main(String[] args) throws IOException{
// TODO code application logic here
Address targetAddress = GenericAddress.parse("udp:127.0.0.1/161");
TransportMapping transport = new DefaultUdpTransportMapping();
Snmp snmp = new Snmp(transport);
//USM - User Based Security Model
USM usm = new USM(SecurityProtocols.getInstance(),
new OctetString(MPv3.createLocalEngineID()), 0);
SecurityModels.getInstance().addSecurityModel(usm);
transport.getListenAddress();
if(transport.getListenAddress()!=null)
System.out.println("Adresa de ascultare este:"+transport.getListenAddress());
else System.out.println("Nu exista");
byte a[]=new byte[]{1,2};
transport.sendMessage(targetAddress, a);
transport.listen();
if(transport.isListening())
System.out.println("Marimea maxima a mesajul este: "+transport.getMaxInboundMessageSize());
System.out.println(snmp.getNextRequestID());
snmp.getUSM().addUser(new OctetString("MD5DES"),
new UsmUser(new OctetString("MD5DES"),
AuthMD5.ID,
new OctetString("MD5DESUserAuthPassword"),
PrivDES.ID,
new OctetString("MD5DESUserPrivPassword")));
// creare target
UserTarget target = new UserTarget();
target.setAddress(targetAddress);
target.setRetries(1);
target.setTimeout(5000);
target.setVersion(SnmpConstants.version3);
target.setSecurityLevel(SecurityLevel.AUTH_PRIV);
target.setSecurityName(new OctetString("MD5DES"));
System.out.println("User~ul: "+snmp.getUSM());
System.out.println("Adresa la care va fi trimis mesajul: "+target.getAddress());
// creare PDU
PDU pdu = new ScopedPDU();
pdu.add(new VariableBinding(new OID("1.3.6")));
pdu.setType(PDU.GETNEXT);
System.out.println("Tip PDU: "+pdu.getType());
// trimitere PDU
ResponseEvent response = snmp.send(pdu, target);
// extrage raspunsul PDU (poate fi null daca timpul expira)
PDU responsePDU = response.getResponse();
System.out.println("Raspuns: "+response.getResponse());
//extrage adresa folosita de agent pentru a trimite raspunsul
Address peerAddress = response.getPeerAddress();
System.out.println(response.getRequest());
snmp.listen();
CommunityTarget communityTarget = new CommunityTarget();
communityTarget.setCommunity(new OctetString("public"));
communityTarget.setAddress(targetAddress);
communityTarget.setRetries(3);
communityTarget.setTimeout(3000);
communityTarget.setVersion(SnmpConstants.version1);
System.out.println("Comunity target: "+communityTarget.getCommunity());
// creare PDU
pdu = new PDU();
pdu.add(new VariableBinding(new OID(new int[] {1,3,6,1,2,1,1,1})));
pdu.add(new VariableBinding(new OID(new int[] {1,3,6,1,2,1,1,2})));
pdu.add(new VariableBinding(new OID(new int[] {1,3,6,1,2,1,1,3})));
pdu.add(new VariableBinding(new OID(new int[] {1,3,6,1,2,1,1,4})));
pdu.add(new VariableBinding(new OID(new int[] {1,3,6,1,2,1,1,5})));
pdu.setType(PDU.GETNEXT);
snmp.listen();
ResponseListener listener = new ResponseListener() {
public void onResponse(ResponseEvent event) {
PDU response = event.getResponse();
PDU request = event.getRequest();
if (response == null) {
System.out.println("Request "+request+" timed out");
}
else {
System.out.println("Received response "+response+" on request "+
request);
}}
};
snmp.sendPDU(pdu, communityTarget, null, listener);
System.out.println(snmp.get(pdu, communityTarget));
//Traps (notificari) si alte mesaje SNMP pot fi receptionate astfel:
CommandResponder trapPrinter = new CommandResponder() {
public synchronized void processPdu(CommandResponderEvent e) {
PDU command = e.getPDU();
if (command != null) {
System.out.println(command.toString());
}
}
};
snmp.addCommandResponder(trapPrinter);
}
}
**************************************************************************************************
output
Adresa de ascultare este:192.168.2.2/0
Marimea maxima a mesajul este: 65535
345088628
User~ul: org.snmp4j.security.USM at bf32c
Adresa la care va fi trimis mesajul: 127.0.0.1/161
Tip PDU: -95
Raspuns: null
GETNEXT[reqestID=345088629, errorStatus=0, errorIndex=0, VBS[1.3.6 = Null]]
Comunity target: public
Request GET[requestID=345088630, errorStatus=Success(0), errorIndex=0,
VBS[1.3.6.1.2.1.1.1 = Null; 1.3.6.1.2.1.1.2 = Null; 1.3.6.1.2.1.1.3 =
Null; 1.3.6.1.2.1.1.4 = Null; 1.3.6.1.2.1.1.5 = Null]] timed out
org.snmp4j.event.ResponseEvent[source=org.snmp4j.Snmp at 1c5c1]
More information about the SNMP4J
mailing list