Thursday, March 10, 2016

SNMP application program

Aim
To write a java program for SNMP application program

Algorithm

1.Start the program.
2.Get the frame size from the user

3.To create the frame based on the user request. 4.To send frames to server from the client side.

5.If your frames reach the server it will send ACK signal to client otherwise it will send NACK signal to client.

6.Stop the program


Program
import java.io.IOException;
import org.snmp4j.CommunityTarget; import org.snmp4j.PDU;
import org.snmp4j.Snmp; import org.snmp4j.Target;
import org.snmp4j.TransportMapping;
import org.snmp4j.event.ResponseEvent;
import org.snmp4j.mp.SnmpConstants;
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;

public class SNMPManager {


Snmp snmp = null;

String address = null;

  • Constructor

  • @param add

*/

public SNMPManager(String add)

{

address = add;
public static void main(String[] args) throws IOException {

/**

* Port 161 is used for Read and Other operations

  • Port 162 is used for the trap generation */

SNMPManager client = new SNMPManager("udp:127.0.0.1/161");

client.start();

/**

  • OID - .1.3.6.1.2.1.1.1.0 => SysDec

  • OID - .1.3.6.1.2.1.1.5.0 => SysName

* => MIB explorer will be usefull here, as discussed in previous article */


String sysDescr = client.getAsString(new OID(".1.3.6.1.2.1.1.1.0")); System.out.println(sysDescr);

}


/**

  • get any answers because the communication is asynchronous

  • and the listen() method listens for answers.

  • @throws IOException

*/

private void start() throws IOException {

TransportMapping transport = new DefaultUdpTransportMapping();

snmp = new Snmp(transport);

// Do not forget this line! transport.listen();

}


/**

  • Method which takes a single OID and returns the response from the agent as a String.

  • @param oid

  • @return

  • @throws IOException

*/


public String getAsString(OID oid) throws IOException {

ResponseEvent event = get(new OID[] { oid });

return event.getResponse().get(0).getVariable().toString();

}

/**

  • This method is capable of handling multiple OIDs

  • @param oids

  • @return

  • @throws IOException

*/

public ResponseEvent get(OID oids[]) throws IOException {
PDU pdu = new PDU();

for (OID oid : oids) {

pdu.add(new VariableBinding(oid));

}

pdu.setType(PDU.GET);

ResponseEvent event = snmp.send(pdu, getTarget(), null);
if(event != null) {

return event;

}

throw new RuntimeException("GET timed out");

}

/**

  • This method returns a Target, which contains information about

  • where the data should be fetched and how.

  • @return

*/

private Target getTarget() {

Address targetAddress = GenericAddress.parse(address); CommunityTarget target = new CommunityTarget();

target.setCommunity(new OctetString("public"));
target.setAddress(targetAddress);

target.setRetries(2);

target.setTimeout(1500);

target.setVersion(SnmpConstants.version2c);
return target;

}}


OUT PUT


Hardware: x86 Family 6 Model 23 Stepping 10 AT/AT COMPATIBLE – Software: Windows 2000 Version 5.1 (Build 2600 Multiprocessor Free)

No comments:

Post a Comment