1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120
|
package netwokTools;
import java.io.IOException;
import java.net.InetAddress;
import java.util.Calendar;
import java.util.Date;
import java.util.Vector;
import org.snmp4j.CommunityTarget;
import org.snmp4j.PDU;
import org.snmp4j.Snmp;
import org.snmp4j.TransportMapping;
import org.snmp4j.event.ResponseEvent;
import org.snmp4j.event.ResponseListener;
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 SNMPCommands implements ResponseListener {
String resp="";
String targetAddress;
public SNMPCommands(String address) {
this.targetAddress = address;
}
public void send(int[] OIDvar, int ReqType) {
Address targetAddress = GenericAddress.parse("udp:"+this.targetAddress+"/161");
TransportMapping transport = null;
try {
transport = new DefaultUdpTransportMapping();
} catch (IOException e1) {
System.out.println("Error here");
}
Snmp snmp = new Snmp(transport);
try {
snmp.listen();
} catch (IOException e) {
e.printStackTrace();
}
// setting up target
CommunityTarget target = new CommunityTarget();
target.setCommunity(new OctetString("public"));
target.setAddress(targetAddress);
target.setRetries(2);
target.setTimeout(1500);
target.setVersion(SnmpConstants.version1);
target.setTimeout(5000);
// creating PDU
PDU pdu = new PDU();
pdu.add(new VariableBinding(new OID(OIDvar)));
pdu.setType(ReqType);
//The Send Action
try {
snmp.send(pdu, target, null, this);
} catch (IOException e) {
e.printStackTrace();
}
}
public String getOS() {
send(new int[] {1,3,6,1,2,1,1,1,0}, PDU.GET);
while (resp.equals(""));
String full = resp.split(" = ")[1];
int begin = full.indexOf("Software: ");
int end = full.indexOf("Version");
return full.substring(begin+"Software: ".length(),end+"Version ".length()+4);
}
public Date getSystemConnectionPeriod() {
int[] oid = new int[] {1,3,6,1,2,1,1,3,0};
this.send(oid, PDU.GET);
while (this.resp.equals(""));
String val = resp.split(" = ")[1];
String args[] = (val.substring(0,val.length()-3)).split(":");
Date D = new Date(100000);
D = this.makeDate(args);
return D;
}
public static void main(String[] args) {
SNMPCommands com = new SNMPCommands("10.50.21.22");
SNMPCommands com2 = new SNMPCommands("10.50.21.22");
System.out.println(com.getOS());
System.out.println(com2.getSystemConnectionPeriod());
}
public void onResponse(ResponseEvent event) {
// Always cancel async request when response has been received
// otherwise a memory leak is created! Not canceling a request
// immediately can be useful when sending a request to a broadcast
// address.
((Snmp)event.getSource()).cancel(event.getRequest(), this);
this.resp = event.getResponse().get(0).toString();
}
@SuppressWarnings("deprecation")
public Date makeDate(String[] args) {
Calendar C = Calendar.getInstance();
C.setTimeInMillis(System.currentTimeMillis());
Date D = new Date(C.getTime().getYear(), C.getTime().getMonth(), C.getTime().getDate());
D.setHours(Integer.parseInt(args[0]));
D.setMinutes(Integer.parseInt(args[1]));
D.setSeconds(Integer.parseInt(args[2]));
return D;
}
} |
Partager