📄 iproutetable.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.PDU;
import org.snmp4j.smi.VariableBinding;
import sitech.www.frame.jdbc.SqlInsert;
import sitech.www.frame.jdbc.SqlUpdate;
import com.sitech.net.topo.CommSnmpGet;
public class IpRouteTable {
private static final String DESC_OID = "1.3.6.1.2.1.1.1.0";
public static final String ROOT_OID = "1.3.6.1.2.1.4.21.1.1";
public static final int ATTRIBCOUNT = 13;
private String ID;
private String IP;
Vector rowVector = new Vector();
private void addRow(IpRouteTableRow 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();
String sys_desc = "";
try {
PDU pdu = snmpGet.getPdu(DESC_OID);
if (pdu != null) {
VariableBinding vb = pdu.get(0);
sys_desc = vb.getVariable().toString();
}
} catch (Exception e1) {
// TODO Auto-generated catch block
System.out.println("IP: " + ip + " 采集RouterTable失败]");
}
String sysdesc_sql = "update tb_topo_node_info set node_desc='"
+ sys_desc + "' where node_id='" + ID + "'";
SqlUpdate.update(sysdesc_sql);
snmpGet.setRootOid(ROOT_OID);
try {
snmpGet.workTable(ROOT_OID);
} catch (IOException e) {
// TODO Auto-generated catch block
System.out.println("IP: " + ip + " 采集RouterTable失败]");
}
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);
// 填充ROUTE目标网络
IpRouteTableRow row = new IpRouteTableRow();
row.setRowIndex(key);
row.setIpRouteDest(value);
this.addRow(row);
}
try {
for (int i = 0; i < rowVector.size(); i++) {
IpRouteTableRow row = (IpRouteTableRow) 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();
if (oid.startsWith("1.3.6.1.2.1.4.21.1.2.")) {
row.setIpRouteIfIndex(var);
} else if (oid.startsWith("1.3.6.1.2.1.4.21.1.3.")) {
row.setIpRouteMetric1(var);
} else if (oid.startsWith("1.3.6.1.2.1.4.21.1.4.")) {
row.setIpRouteMetric2(var);
} else if (oid.startsWith("1.3.6.1.2.1.4.21.1.5.")) {
row.setIpRouteMetric3(var);
} else if (oid.startsWith("1.3.6.1.2.1.4.21.1.6.")) {
row.setIpRouteMetric4(var);
} else if (oid.startsWith("1.3.6.1.2.1.4.21.1.7.")) {
row.setIpRouteNextHop(var);
} else if (oid.startsWith("1.3.6.1.2.1.4.21.1.8.")) {
row.setIpRouteType(var);
} else if (oid.startsWith("1.3.6.1.2.1.4.21.1.9.")) {
row.setIpRouteProto(var);
} else if (oid.startsWith("1.3.6.1.2.1.4.21.1.10.")) {
row.setIpRouteAge(var);
} else if (oid.startsWith("1.3.6.1.2.1.4.21.1.11.")) {
row.setIpRouteMask(var);
} else if (oid.startsWith("1.3.6.1.2.1.4.21.1.12.")) {
row.setIpRouteMetric5(var);
} else if (oid.startsWith("1.3.6.1.2.1.4.21.1.13.")) {
row.setIpRouteInfo(var);
}
}
}
} catch (Exception e) {
// TODO Auto-generated catch block
System.out.println("IP: " + ip + " 采集RouterTable失败]");
}
snmpGet.release();
System.out.println("[IP: " + ip + " RouteTable采集完毕]");
}
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 void saveToDB() {
System.out.println("[NodeID: " + ID + " IpAddress: " + IP
+ " RouteTable信息记录" + rowVector.size() + "条]");
for (int i = 0; i < rowVector.size(); i++) {
IpRouteTableRow row = (IpRouteTableRow) rowVector.get(i);
String ipRouteDest = row.getIpRouteDest();
String ipRouteIfIndex = row.getIpRouteIfIndex();
String ipRouteMectric1 = row.getIpRouteMetric1();
String ipRouteMectric2 = row.getIpRouteMetric2();
String ipRouteMectric3 = row.getIpRouteMetric3();
String ipRouteMectric4 = row.getIpRouteMetric4();
String ipRouteMectric5 = row.getIpRouteMetric5();
String ipRouteNextHop = row.getIpRouteNextHop();
String ipRouteType = row.getIpRouteType();
String ipRouteProto = row.getIpRouteProto();
String ipRouteAge = row.getIpRouteAge();
String ipRouteMask = row.getIpRouteMask();
String ipRouteInfo = row.getIpRouteInfo();
if ((!(ipRouteType.trim().equals("2")))
&& (!ipRouteDest.trim().equalsIgnoreCase("noSuchInstance"))
&& (!ipRouteIfIndex.trim().equalsIgnoreCase(
"noSuchInstance"))
&& (!ipRouteMectric1.trim().equalsIgnoreCase(
"noSuchInstance"))
&& (!ipRouteMectric2.trim().equalsIgnoreCase(
"noSuchInstance"))
&& (!ipRouteMectric3.trim().equalsIgnoreCase(
"noSuchInstance"))
&& (!ipRouteMectric4.trim().equalsIgnoreCase(
"noSuchInstance"))
&& (!ipRouteMectric5.trim().equalsIgnoreCase(
"noSuchInstance"))
&& (!ipRouteNextHop.trim().equalsIgnoreCase(
"noSuchInstance"))
&& (!ipRouteType.trim().equalsIgnoreCase("noSuchInstance"))
&& (!ipRouteProto.trim().equalsIgnoreCase("noSuchInstance"))
&& (!ipRouteAge.trim().equalsIgnoreCase("noSuchInstance"))
&& (!ipRouteMask.trim().equalsIgnoreCase("noSuchInstance"))
&& (!ipRouteInfo.trim().equalsIgnoreCase("noSuchInstance"))) {
String sql = "insert into tb_topo_iproutetable (NODEID,IPROUTEDEST,IPROUTEIFINDEX,IPROUTEMETRIC1,IPROUTEMETRIC2,IPROUTEMETRIC3,IPROUTEMETRIC4,IPROUTEMETRIC5,IPROUTENEXTHOP,IPROUTETYPE,IPROUTEPROTO,IPROUTEAGE,IPROUTEMASK,IPROUTEINFO) values ('"
+ ID
+ "','"
+ ipRouteDest
+ "','"
+ ipRouteIfIndex
+ "','"
+ ipRouteMectric1
+ "','"
+ ipRouteMectric2
+ "','"
+ ipRouteMectric3
+ "','"
+ ipRouteMectric4
+ "','"
+ ipRouteMectric5
+ "','"
+ ipRouteNextHop
+ "','"
+ ipRouteType
+ "','"
+ ipRouteProto
+ "','"
+ ipRouteAge
+ "','"
+ ipRouteMask
+ "','"
+ ipRouteInfo + "')";
SqlInsert.insert(sql);
}
}
System.out.println("[NodeID: " + ID + " IpAddress: " + IP
+ " RouteTable入库完毕]");
}
public static void main(String args[]) throws Exception {
String ip = "130.30.8.2";
int port = 161;
String community = "ahnms2008";
IpRouteTable ipRouteTable = new IpRouteTable();
ipRouteTable.FillTable(ip, port, community,
"04001FFA-7943-A782-FDE6-769683CF268C");
// ipRouteTable.saveToDB();
// Vector rowsVector = ipRouteTable.getRrows();
// for (int i = 0; i < rowsVector.size(); i++) {
// IpRouteTableRow rows = (IpRouteTableRow) rowsVector.get(i);
// System.out.println("[RowIndex = " + rows.getRowIndex()
// + "] [IpRouteDest = " + rows.getIpRouteDest()
// + "] [IpRouteIfIndex = " + rows.getIpRouteIfIndex()
// + "] [IpRouteMetric1 = " + rows.getIpRouteMetric1()
// + "] [IpRouteMetric2 = " + rows.getIpRouteMetric2()
// + "] [IpRouteMetric3 = " + rows.getIpRouteMetric3()
// + "] [IpRouteMetric4 = " + rows.getIpRouteMetric4()
// + "] [IpRouteNextHop = " + rows.getIpRouteNextHop()
// + "] [IpRouteType = " + rows.getIpRouteType()
// + "] [IpRouteProto = " + rows.getIpRouteProto()
// + "] [IpRouteAge = " + rows.getIpRouteAge()
// + "] [IpRouteMask = " + rows.getIpRouteMask()
// + "] [IpRouteMetric5 = " + rows.getIpRouteMetric5()
// + "] [IpRouteInfo = " + rows.getIpRouteInfo() + "]");
// }
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -