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

📄 dot1dbaseporttable.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.smi.VariableBinding;

import sitech.www.frame.jdbc.SqlInsert;

import com.sitech.net.topo.CommSnmpGet;

public class Dot1dBasePortTable {

	public static final String ROOT_OID = "1.3.6.1.2.1.17.1.4.1.1";

	public static final int ATTRIBCOUNT = 5;

	private String ID;

	private String IP;

	Vector rowVector = new Vector();

	private void addRow(Dot1dBasePortTableRow row) {
		rowVector.add(row);
	}

	public void FillTable(String ip, int port, String community, String id) {
		this.IP = ip;
		this.ID = id;

		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 + " 采集Dot1dBasePortTable失败]");
		}

		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);
			// 填充BasePort
			Dot1dBasePortTableRow row = new Dot1dBasePortTableRow();
			row.setRowIndex(key);
			row.setDot1dBasePort(value);
			this.addRow(row);
		}

		try {
			for (int i = 0; i < rowVector.size(); i++) {
				Dot1dBasePortTableRow row = (Dot1dBasePortTableRow) 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.17.1.4.1.2.")) {
						row.setDot1dBasePortIfIndex(var);
					} else if (oid.startsWith("1.3.6.1.2.1.17.1.4.1.3.")) {
						row.setDot1dBasePortCircuit(var);
					} else if (oid.startsWith("1.3.6.1.2.1.17.1.4.1.4.")) {
						row.setDot1dBasePortDelayExceededDiscards(var);
					} else if (oid.startsWith("1.3.6.1.2.1.17.1.4.1.5.")) {
						row.setDot1dBasePortMtuExceededDiscards(var);
					}
				}
			}
		} catch (Exception e) {
			// TODO Auto-generated catch block
			System.out.println("[IP: " + IP + " 采集Dot1dBasePortTable失败]");
		}
		snmpGet.release();
		System.out.println("[IP: " + IP + " Dot1dBasePortTable采集完毕]");
	}

	public void saveToDB() {
		System.out.println("[NodeID: " + ID + " IpAddress: " + IP
				+ " Dot1dBasePortTable信息记录" + rowVector.size() + "条]");
		for (int i = 0; i < rowVector.size(); i++) {
			Dot1dBasePortTableRow row = (Dot1dBasePortTableRow) rowVector
					.get(i);
			String baseProtIfIndex = row.getDot1dBasePortIfIndex();
			String basePort = row.getDot1dBasePort();
			String basePortCircuit = row.getDot1dBasePortCircuit();
			String basePortDelayED = row
					.getDot1dBasePortDelayExceededDiscards();
			String basePortMtuED = row.getDot1dBasePortMtuExceededDiscards();
			String insert_sql = "insert into tb_topo_dot1dbaseporttable (nodeid,baseportifindex,baseport,baseportcircuit,baseportdelayed,baseportmtued) values ('"
					+ ID
					+ "','"
					+ baseProtIfIndex
					+ "','"
					+ basePort
					+ "','"
					+ basePortCircuit
					+ "','"
					+ basePortDelayED
					+ "','"
					+ basePortMtuED + "')";
			SqlInsert.insert(insert_sql);
		}
		System.out.println("[NodeID: " + ID + " IpAddress: " + IP
				+ " Dot1dBasePortTable入库完毕]");

	}

	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[]) {
		// A1E27737-A280-A9E9-6192-8A44DA8B3366
		// 130.30.2.8
		// 53A5847A-546D-9FF1-9CE2-A2CF99B11760
		// 130.30.2.3
		// E87233DA-0E07-267E-75E8-DC6137930F04
		// 130.30.2.6
		// 8073F450-573D-8D4F-9D75-DFABB6D06668
		// 130.30.15.253
		// 73FEDCB3-2B88-A30D-E82E-A86FD131C617
		// 130.30.15.252
		// 5154CDE7-CB4F-DA7E-B36B-6BBC64E7E26B
		// 130.30.2.1
		String ip = "130.30.2.6";
		Dot1dBasePortTable basePortTable = new Dot1dBasePortTable();
		basePortTable.FillTable(ip, 161, "ahnms2008",
				"E87233DA-0E07-267E-75E8-DC6137930F04");
		basePortTable.saveToDB();
	}

	// public String getRowIndex() {
	// // TODO Auto-generated method stub
	// return null;
	// }
	//
	// public void addRow(TableRow row) {
	// // TODO Auto-generated method stub
	//
	// }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -