?? iftable.java
字號:
package com.sitech.net.topo.table;
import java.io.IOException;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Set;
import java.util.Vector;
import org.snmp4j.smi.VariableBinding;
import sitech.www.frame.jdbc.SqlInsert;
import com.sitech.net.topo.CommSnmpGet;
public class IfTable {
public static final String ROOT_OID = "1.3.6.1.2.1.2.2.1.1";
public static final int ATTRIBCOUNT = 22;
private String ID;
private String IP;
Vector rowVector = new Vector();
private void addRow(IfTableRow row) {
rowVector.add(row);
}
public void FillTable(String ip, int port, String community, String id) {
this.ID = id;
this.IP = ip;
CommSnmpGet snmpGet = new CommSnmpGet(ip, port, community);
snmpGet.init();
snmpGet.setRootOid(ROOT_OID);
try {
snmpGet.workTable(ROOT_OID);
} catch (IOException e) {
// TODO Auto-generated catch block
System.out.println("[IP: " + IP + " 采集IfTable失敗]");
}
HashMap hm = snmpGet.getWalkHashMap();
Set set = hm.keySet();
Iterator it = set.iterator();
while (it.hasNext()) {
String key = (String) it.next();
String value = (String) hm.get(key);
// 填充IfIndex
IfTableRow row = new IfTableRow();
row.setRowIndex(key);
row.setIfindex(value);
this.addRow(row);
}
try {
for (int i = 0; i < rowVector.size(); i++) {
IfTableRow row = (IfTableRow) rowVector.elementAt(i);
String rowIndex = row.getRowIndex();
Vector oidsVector = getOtherOids(rowIndex, ATTRIBCOUNT);
Vector resultVector = snmpGet.getPDU(oidsVector);
for (int j = 0; j < resultVector.size(); j++) {
VariableBinding vb = (VariableBinding) resultVector.get(j);
String oid = vb.getOid().toString();
String var = vb.getVariable().toString();
// System.out.println(oid + " = " + var);
if (oid.startsWith("1.3.6.1.2.1.2.2.1.2.")) {
row.setIfdesc(var);
} else if (oid.startsWith("1.3.6.1.2.1.2.2.1.3.")) {
row.setIftype(var);
} else if (oid.startsWith("1.3.6.1.2.1.2.2.1.4.")) {
row.setIfmtu(var);
} else if (oid.startsWith("1.3.6.1.2.1.2.2.1.5.")) {
row.setIfspeed(var);
} else if (oid.startsWith("1.3.6.1.2.1.2.2.1.6.")) {
row.setIfphyaddr(var);
} else if (oid.startsWith("1.3.6.1.2.1.2.2.1.7.")) {
row.setIfadminstatus(var);
} else if (oid.startsWith("1.3.6.1.2.1.2.2.1.8.")) {
row.setIfoperstatus(var);
} else if (oid.startsWith("1.3.6.1.2.1.2.2.1.9.")) {
row.setIflastchange(var);
} else if (oid.startsWith("1.3.6.1.2.1.2.2.1.10.")) {
row.setIfinoctets(var);
} else if (oid.startsWith("1.3.6.1.2.1.2.2.1.11.")) {
row.setIfinucastpkts(var);
} else if (oid.startsWith("1.3.6.1.2.1.2.2.1.12.")) {
row.setIfinnucastpkts(var);
} else if (oid.startsWith("1.3.6.1.2.1.2.2.1.13.")) {
row.setIfindiscards(var);
} else if (oid.startsWith("1.3.6.1.2.1.2.2.1.14.")) {
row.setIfinerrors(var);
} else if (oid.startsWith("1.3.6.1.2.1.2.2.1.15.")) {
row.setIfinunknownprotos(var);
} else if (oid.startsWith("1.3.6.1.2.1.2.2.1.16.")) {
row.setIfoutoctets(var);
} else if (oid.startsWith("1.3.6.1.2.1.2.2.1.17.")) {
row.setIfoutucastpkts(var);
} else if (oid.startsWith("1.3.6.1.2.1.2.2.1.18.")) {
row.setIfoutnucastpkts(var);
} else if (oid.startsWith("1.3.6.1.2.1.2.2.1.19.")) {
row.setIfoutdiscards(var);
} else if (oid.startsWith("1.3.6.1.2.1.2.2.1.20.")) {
row.setIfouterrors(var);
} else if (oid.startsWith("1.3.6.1.2.1.2.2.1.21.")) {
row.setIfoutqlen(var);
} else if (oid.startsWith("1.3.6.1.2.1.2.2.1.22.")) {
row.setIfspecific(var);
}
}
}
} catch (Exception e) {
// TODO Auto-generated catch block
System.out.println("[IP: " + IP + " 采集IfTable失敗]");
}
snmpGet.release();
System.out.println("[IP: " + IP + " IfTable采集完畢]");
}
public void saveToDB() {
System.out.println("[NodeID: " + ID + " IpAddress: " + IP
+ " IfTable信息記錄" + rowVector.size() + "條]");
for (int i = 0; i < rowVector.size(); i++) {
IfTableRow row = (IfTableRow) rowVector.get(i);
String ifindex = row.getIfindex();
String ifdesc = row.getIfdesc();
String iftype = row.getIftype();
String ifmtu = row.getIfmtu();
String ifspeed = row.getIfspeed();
String ifphyaddr = row.getIfphyaddr();
String ifadminstatus = row.getIfadminstatus();
String ifoperstatus = row.getIfoperstatus();
String iflastchange = row.getIflastchange();
String ifinoctets = row.getIfinoctets();
String ifinucastpkts = row.getIfinucastpkts();
String ifinnucastpkts = row.getIfinnucastpkts();
String ifindiscards = row.getIfindiscards();
String ifinerrors = row.getIfinerrors();
String ifinunknownprotos = row.getIfinunknownprotos();
String ifoutoctets = row.getIfoutoctets();
String ifoutucastpkts = row.getIfoutucastpkts();
String ifoutnucastpkts = row.getIfoutnucastpkts();
String ifoutdiscards = row.getIfoutdiscards();
String ifouterrors = row.getIfouterrors();
String ifoutqlen = row.getIfoutqlen();
String ifspecific = row.getIfspecific();
// noSuchInstance
// if ((!ifindex.equalsIgnoreCase("noSuchInstance"))
// && (!ifdesc.equalsIgnoreCase("noSuchInstance"))
// && (!iftype.equalsIgnoreCase("noSuchInstance"))
// && (!ifmtu.equalsIgnoreCase("noSuchInstance"))
// && (!ifspeed.equalsIgnoreCase("noSuchInstance"))
// && (!ifphyaddr.equalsIgnoreCase("noSuchInstance"))
// && (!ifadminstatus.equalsIgnoreCase("noSuchInstance"))
// && (!ifoperstatus.equalsIgnoreCase("noSuchInstance"))
// && (!iflastchange.equalsIgnoreCase("noSuchInstance"))
// && (!ifinoctets.equalsIgnoreCase("noSuchInstance"))
// && (!ifinucastpkts.equalsIgnoreCase("noSuchInstance"))
// && (!ifinnucastpkts.equalsIgnoreCase("noSuchInstance"))
// && (!ifindiscards.equalsIgnoreCase("noSuchInstance"))
// && (!ifinerrors.equalsIgnoreCase("noSuchInstance"))
// && (!ifinunknownprotos.equalsIgnoreCase("noSuchInstance"))
// && (!ifoutoctets.equalsIgnoreCase("noSuchInstance"))
// && (!ifoutucastpkts.equalsIgnoreCase("noSuchInstance"))
// && (!ifoutnucastpkts.equalsIgnoreCase("noSuchInstance"))
// && (!ifoutdiscards.equalsIgnoreCase("noSuchInstance"))
// && (!ifouterrors.equalsIgnoreCase("noSuchInstance"))
// && (!ifoutqlen.equalsIgnoreCase("noSuchInstance"))
// && (!ifspecific.equalsIgnoreCase("noSuchInstance"))) {
String sql = "insert into tb_topo_iftable (nodeid,ifindex,ifdesc,iftype,ifmtu,ifspeed,ifphyaddr,ifadminstatus,ifoperstatus,iflastchange,ifinoctets,ifinucastpkts,ifinnucastpkts,ifindiscards,ifinerrors,ifinunknownprotos,ifoutoctets,ifoutucastpkts,ifoutnucastpkts,ifoutdiscards,ifouterrors,ifoutqlen,ifspecific) values ('"
+ ID
+ "','"
+ ifindex
+ "','"
+ ifdesc
+ "','"
+ iftype
+ "','"
+ ifmtu
+ "','"
+ ifspeed
+ "','"
+ ifphyaddr
+ "','"
+ ifadminstatus
+ "','"
+ ifoperstatus
+ "','"
+ iflastchange
+ "','"
+ ifinoctets
+ "','"
+ ifinucastpkts
+ "','"
+ ifinnucastpkts
+ "','"
+ ifindiscards
+ "','"
+ ifinerrors
+ "','"
+ ifinunknownprotos
+ "','"
+ ifoutoctets
+ "','"
+ ifoutucastpkts
+ "','"
+ ifoutnucastpkts
+ "','"
+ ifoutdiscards
+ "','"
+ ifouterrors
+ "','"
+ ifoutqlen
+ "','"
+ ifspecific
+ "')";
SqlInsert.insert(sql);
// }
}
System.out.println("[NodeID: " + ID + " IpAddress: " + IP
+ " IfTable入庫完畢]");
}
private Vector getOtherOids(String rowIndex, int attribCount) {
Vector vector = new Vector();
for (int i = 2; i <= attribCount; i++) {
String oid = releaseRootOidLast(ROOT_OID, rowIndex, i);
vector.add(oid);
}
return vector;
}
private String releaseRootOidLast(String rootOid, String rowIndex, int int_i) {
String result = "";
String rowIndexLast = rowIndex.substring(rootOid.length(), rowIndex
.length());
String rootOidStart = rootOid.substring(0, rootOid.length() - 1);
result = rootOidStart + int_i + rowIndexLast;
return result;
}
public Vector getRrows() {
return rowVector;
}
public static void main(String args[]) {
String ip = "130.30.15.252";
int port = 161;
String community = "ahnms2008";
IfTable ifTable = new IfTable();
ifTable.FillTable(ip, port, community,
"73FEDCB3-2B88-A30D-E82E-A86FD131C617");
// ifTable.saveToDB();
// Vector vector = ifTable.getRrows();
// for (int i = 0; i < vector.size(); i++) {
// IfTableRow row = (IfTableRow) vector.get(i);
// System.out.println(row.getIfdesc());
// }
// Vector vector = ifTable.getOtherOids("1.3.6.1.2.1.2.2.1.1.2",
// IfTable.ATTRIBCOUNT);
// for (int i = 0; i < vector.size(); i++) {
// System.out.println((String)vector.get(i));
// }
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -