⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 iproutetable.java

📁 一个java编写的拓扑自动发现程序
💻 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 + -