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

📄 vpserver.java

📁 监控大型网络的软件。能够自动发现拓扑结构
💻 JAVA
📖 第 1 页 / 共 5 页
字号:
		Set rrdNetboxid = (Set)hm.get("boxId");		String datatype = (String)hm.get("datatype");		Map m = getRRD(rrdNetboxid, datatype);		for (Iterator it = m.entrySet().iterator(); it.hasNext();) {			Map.Entry me = (Map.Entry)it.next();			String netboxid = (String)me.getKey();			Map fnMap = (Map)((Map)me.getValue()).get(datatype);			outl(netboxid+"^"+fnMap.values().iterator().next());		}	}	private static void listLinkLoad(Map hm) throws SQLException	{		outl("listLinkLoad");		Set rrdGwId = (Set)hm.get("gwId");		Set rrdSwId = (Set)hm.get("swId");		Set rrdDualGwId = (Set)hm.get("dualGwId");		Set rrdDualSwId = (Set)hm.get("dualSwId");		if (rrdGwId == null) rrdGwId = new HashSet();		if (rrdSwId == null) rrdSwId = new HashSet();		if (rrdDualGwId == null) rrdDualGwId = new HashSet();		String sqlAdd = "";		Map swMap = new HashMap();		Set gwSet = new HashSet();		Set swId = new HashSet();		if (!rrdGwId.isEmpty() || !rrdDualGwId.isEmpty()) {			// Get RSM translation			ResultSet rs = Database.query("select gwportid,swportid from gwport join gwportprefix using(gwportid) join prefix using(prefixid) join vlan using(vlanid) join module m1 on (gwport.moduleid=m1.moduleid) join swport on (substr(gwport.interface,5)=swport.vlan and swport.moduleid in (select moduleid from module where netboxid=gwport.to_netboxid)) join netbox using(netboxid) join type using(typeid) where typename='Cis-WX5302' and swport.link='y' and trunk='f' and gwportid in ("+concat(rrdGwId)+concat(rrdDualGwId)+") order by gwportid");			while (rs.next()) {				swId.add(rs.getString("swportid"));				swMap.put(rs.getString("swportid"), rs.getString("gwportid"));				gwSet.add(rs.getString("gwportid"));			}		}		rrdSwId.addAll(swId);		Map m = getRRD(null, "ifOutOctets", rrdGwId, rrdSwId);		Map m2 = getRRD(null, new HashSet(Arrays.asList(new String[] { "ifOutOctets", "ifInOctets" })), rrdDualGwId, rrdDualSwId);		Map[] mA = new Map[] { m, m2 };		for (int k=0; k < mA.length; k++) {			for (Iterator it = mA[k].entrySet().iterator(); it.hasNext();) {				Map.Entry me = (Map.Entry)it.next();				String netboxid = (String)me.getKey();				Map ifMap = (Map)((Map)me.getValue()).values().iterator().next();				for (Iterator ifIt = ifMap.entrySet().iterator(); ifIt.hasNext();) {					me = (Map.Entry)ifIt.next();					String[] ss = ((String)me.getKey()).split(":");					String id = ss[1];					if (swMap.containsKey(id)) id = (String)swMap.get(id);					else if (gwSet.contains(id)) continue;					outl(id+"^"+me.getValue());				}			}		}	}	private static Map getRRD(Set netboxidS, String s) {		return getRRD(netboxidS, s, null, null);	}	private static Map getRRD(Set netboxidS, String s, Set gwSet) {		return getRRD(netboxidS, s, gwSet, null);	}	private static Map getRRD(Set netboxidS, String s, Set gwSet, Set swSet) {		return getRRD(netboxidS, new HashSet(Arrays.asList(new String[] { s } )), gwSet, swSet, null);	}	private static Map getRRD(Set netboxidS, Set descrS, Set gwSet, Set swSet) {		return getRRD(netboxidS, descrS, gwSet, swSet, null);	}	private static Map getRRD(Set netboxidS, Set descrS, Set gwSet, Set swSet, String sqlAdd) {		if ((netboxidS == null || netboxidS.isEmpty()) &&			(gwSet == null || gwSet.isEmpty()) &&			(swSet == null || swSet.isEmpty()) &&			sqlAdd == null) return new HashMap();		try {			String sql = "SELECT netboxid,descr,name,path,filename,key,value FROM rrd_file JOIN rrd_datasource USING(rrd_fileid) WHERE subsystem='cricket' AND descr IN ("+concat(descrS,"'")+")";			if (netboxidS != null && !netboxidS.isEmpty()) sql += " AND netboxid IN ("+concat(netboxidS)+")";			boolean g = gwSet != null && !gwSet.isEmpty();			if (g) sql += " AND ((key='gwport' AND value IN ("+concat(gwSet, "'")+"))";			if (swSet != null && !swSet.isEmpty()) sql += " " + (g?"OR":"AND") + " (key='swport' AND value IN ("+concat(swSet, "'")+"))";			if (g) sql += ")";			if (sqlAdd != null) sql += sqlAdd;			ResultSet rs = Database.query(sql);			Map fnMap = new HashMap();			while (rs.next()) {				String fn = rs.getString("path")+"/"+rs.getString("filename");				List l;				if ( (l=(List)fnMap.get(fn)) == null) {					fnMap.put(fn, l = new ArrayList());					l.add(new String[] { rs.getString("netboxid"), rs.getString("descr"), rs.getString("key"), rs.getString("value") } );				}				l.add(rs.getString("name"));			}			List f = new ArrayList();			List ff = new ArrayList();			for (Iterator it = fnMap.entrySet().iterator(); it.hasNext();) {				Map.Entry me = (Map.Entry)it.next();				String fn = "\"" + (String)me.getKey() + "\"";				List l = (List)me.getValue();				ff.add(l.remove(0));				for (Iterator lIt = l.iterator(); lIt.hasNext();) {					fn += " " + lIt.next();				}				f.add(fn);			}			List rrd = rrd(f);			if (rrd.size() != f.size()) {				outl("0^Error, rrd: " + rrd.size() + ", " + f.size());				return new HashMap();			}			Map m = new HashMap();			for (int i=0; i < rrd.size(); i++) {				String rrdVal = (String)rrd.get(i);				String[] rrdA = rrdVal.split(" ");				if (!isNum(rrdA[0])) continue;				String[] s = (String[])ff.get(i);				String netboxid = s[0];				String descr = s[1];				String kv = s[2]+":"+s[3];				Map m2;				if ( (m2=(Map)m.get(netboxid)) == null) m.put(netboxid, m2 = new HashMap());				Map m3;				if ( (m3=(Map)m2.get(descr)) == null) m2.put(descr, m3 = new HashMap());				if (rrdA.length > 1 && isNum(rrdA[1])) {					rrdVal = rrdA[0] + "^" + rrdA[1];				}									m3.put(kv, rrdVal);			}			return m;		} catch (SQLException exp) {			outl("SQLException: " + exp);			exp.printStackTrace(new PrintStream(out));		} catch (Exception exp) {			outl("Exception: " + exp);			exp.printStackTrace(new PrintStream(out));		}		return new HashMap();	}	private static boolean isNum(String s) {		try {			Double.parseDouble(s);		} catch (NumberFormatException exp) {			return false;		}		return true;	}	private static String concat(Set set) {		return concat(set, "");	}	private static String concat(Set set, String fnut) {		StringBuffer sb = new StringBuffer();		for (Iterator it = set.iterator(); it.hasNext();) {			Object s = (Object)it.next();			sb.append(fnut+s+fnut);			if (it.hasNext()) sb.append(",");		}		return sb.toString();	}	private static List rrd(List f)	{		List rrd = new ArrayList();		try {			String[] hostCmd = {				Path.bindir + File.separatorChar + "vprrd.py",			};			Runtime rt = Runtime.getRuntime();			Process p = rt.exec(hostCmd);			PrintWriter out = new PrintWriter(p.getOutputStream());			//out.println("/usr/local/nav/cricket/cricket-data/");			out.println( ("max".equals(rrdType)?"MAX":"AVERAGE") );			out.println(rrdTime);			for (Iterator it = f.iterator(); it.hasNext();) {				out.println(it.next());			}			out.close();			BufferedReader in = new BufferedReader(new InputStreamReader(p.getInputStream()));			try {				p.waitFor();			} catch (InterruptedException e) {				System.err.println("InterruptedException: " + e);				outl("InterruptedException: " + e);				e.printStackTrace(System.err);				return rrd;			}			String s;			while ( (s=in.readLine()) != null) {				s = s.trim();				if (s.length() == 0) continue;				rrd.add(s);			}		} catch (Exception e) {			e.printStackTrace(new PrintStream(out));		}		return rrd;	}			static void listRouterGroups() throws SQLException	{		outl("listRouterGroups");		// INSERT INTO vpBoksGrp (gruppeid,pboksid) VALUES ((SELECT gruppeid FROM vpBoksGrpInfo WHERE name='Kjernenett'), (SELECT boksid FROM boks WHERE sysName='ntnu-gw'));		// INSERT INTO vpBoksGrp (gruppeid,pboksid) VALUES ((SELECT gruppeid FROM vpBoksGrpInfo WHERE name='Kjernenett'), (SELECT boksid FROM boks WHERE sysName='sb-gw'));		// INSERT INTO vpBoksGrp (gruppeid,pboksid) VALUES ((SELECT gruppeid FROM vpBoksGrpInfo WHERE name='Kjernenett'), (SELECT boksid FROM boks WHERE sysName='rfb-gw'));		// INSERT INTO vpBoksGrp (gruppeid,pboksid) VALUES ((SELECT gruppeid FROM vpBoksGrpInfo WHERE name='Kjernenett'), (SELECT boksid FROM boks WHERE sysName='hb-gw2'));		// INSERT INTO vpBoksGrp (gruppeid,pboksid) VALUES ((SELECT gruppeid FROM vpBoksGrpInfo WHERE name='Kjernenett'), (SELECT boksid FROM boks WHERE sysName='kjemi-gw'));		// INSERT INTO vpBoksGrp (gruppeid,pboksid) VALUES ((SELECT gruppeid FROM vpBoksGrpInfo WHERE name='Kjernenett'), (SELECT boksid FROM boks WHERE sysName='ed-gw2'));		// INSERT INTO vpBoksGrp (gruppeid,pboksid) VALUES ((SELECT gruppeid FROM vpBoksGrpInfo WHERE name='Kjernenett'), (SELECT boksid FROM boks WHERE sysName='ntnu-gw2'));		// INSERT INTO vpBoksGrp (gruppeid,pboksid) VALUES ((SELECT gruppeid FROM vpBoksGrpInfo WHERE name='Testnett'), (SELECT boksid FROM boks WHERE sysName='oslo-tn-gw2'));		// INSERT INTO vpBoksGrp (gruppeid,pboksid) VALUES ((SELECT gruppeid FROM vpBoksGrpInfo WHERE name='Testnett'), (SELECT boksid FROM boks WHERE sysName='hb-gw6'));		// INSERT INTO vpBoksGrp (gruppeid,pboksid) VALUES ((SELECT gruppeid FROM vpBoksGrpInfo WHERE name='Testnett'), (SELECT boksid FROM boks WHERE sysName='hb-gw5'));		// INSERT INTO vpBoksGrp (gruppeid,pboksid) VALUES ((SELECT gruppeid FROM vpBoksGrpInfo WHERE name='Testnett'), (SELECT boksid FROM boks WHERE sysName='tyholt-gw3'));		// INSERT INTO vpBoksGrp (gruppeid,pboksid) VALUES ((SELECT gruppeid FROM vpBoksGrpInfo WHERE name='Testnett'), (SELECT boksid FROM boks WHERE sysName='tyholt-gw'));		// INSERT INTO vpBoksGrp (gruppeid,pboksid) VALUES ((SELECT gruppeid FROM vpBoksGrpInfo WHERE name='Testnett'), (SELECT boksid FROM boks WHERE sysName='stav-tn-gw2'));		// INSERT INTO vpBoksGrp (gruppeid,pboksid) VALUES ((SELECT gruppeid FROM vpBoksGrpInfo WHERE name='Testnett'), (SELECT boksid FROM boks WHERE sysName='hb-gw7'));		int curid=-1;		//ResultSet rs = Database.query("SELECT gruppeid,name,pboksid FROM vpBoksGrpInfo NATURAL JOIN vpBoksGrp ORDER BY gruppeid");		ResultSet rs = Database.query("SELECT vp_netbox_grp_infoid,name,hideicons,iconname,x,y,pnetboxid FROM vp_netbox_grp_info LEFT JOIN vp_netbox_grp USING (vp_netbox_grp_infoid) ORDER BY vp_netbox_grp_infoid");		while (rs.next()) {			if (rs.getInt("vp_netbox_grp_infoid")!=curid) {				if (curid>=0) outl("");				curid = rs.getInt("vp_netbox_grp_infoid");				out(rs.getString("vp_netbox_grp_infoid") + "^" + rs.getString("name") + "^" + rs.getString("x") + "^" + rs.getString("y") + "^" + (rs.getBoolean("hideicons")?"true":"false") + "^" + rs.getString("iconname") );				if (rs.getString("pnetboxid") == null) continue;			}			out("^" + rs.getString("pnetboxid"));		}		outl("");	}	static void listRouterXY() throws SQLException	{		outl("listRouterXY");		String gruppeid = getp("gruppeid");		if (gruppeid == null) return;		ResultSet rs = Database.query("SELECT pnetboxid,x,y FROM vp_netbox_xy WHERE vp_netbox_grp_infoid = '" + gruppeid + "'");		while (rs.next()) {			outl(rs.getString("pnetboxid") + "^" + rs.getString("x") + "^" + rs.getString("y"));		}	}	static void listBoks() throws SQLException	{		outl("listBoks");		String thisBoksid = getp("boksid");		String thisKat = getp("kat");		if (thisBoksid == null) return;		if (thisKat == null || thisKat.length() == 0) {			// Må koste på oss et SQL kall ekstra			ResultSet rs = Database.query("SELECT catid FROM netbox WHERE netboxid='"+Database.addSlashes(thisBoksid)+"'");			if (!rs.next()) return; // boksid eksisterer ikke			thisKat = rs.getString("catid");		}		ArrayList up = new ArrayList();		ArrayList dn = new ArrayList();		ArrayList link = new ArrayList();		ArrayList linkInfo = new ArrayList();		HashMap linkVlanMap = new HashMap();		HashMap vlanNameMap = new HashMap();		HashMap text = new HashMap();		HashMap textOut = new HashMap();		Set netboxidSet = new HashSet();		Set rrdGwId = new HashSet();		Set rrdSwId = new HashSet();		// Vi har egentlig tre tilfeller her:		// kat=gw -> vi henter info fra gwport og prefiks		// kat=lan -> det er egentlig en switch vi skal vise, så vi må sjekke id'en for denne og så gå i swport		// kat=<alt annet> -> Vi regner med at info finnes i swport		if (thisKat.equalsIgnoreCase("gw")) {			// Hent normalt fra gwport og prefiks			// && = variabelnavn, ## = bytt ut med gitt verdi, !! = \n			{				String[] s = {					"&&sysName!!Kat: ##!!Romid: ##!!Last: &&boksLast",					"catid",					"roomid"				};				text.put("gwBoks", s);			}			{				String[] s = {					"&&sysName!!Nettadr: ##",					"netaddr",				};				text.put("lanBoks", s);			}			{				String[] s = {					"&&sysName!!Nettadr: ##",					"netaddr",				};				text.put("stamBoks", s);			}			{				String[] s = {					"&&sysName!!Nettadr: ##",					"netaddr",				};				text.put("defBoks", s);			}			// Linker			{				String[] s = {					"&&sysNameFrom -> &&sysNameTo!!Interface: ##!!OSPF: ##!!Nettadr: ##!!Capacity: ##!!Last: &&linkLastPst (&&linkLast)!!(gw->gw)",					"interface",					"metric",					"netaddr",					"speed"				};				text.put("gw-gwLink", s);			}			{				String[] s = {					"&&sysNameFrom -> &&sysNameTo!!Interface: ##!!OSPF: ##!!Nettadr: ##!!Capacity: ##!!Last: &&linkLastPst (&&linkLast)!!(gw->stam)",					"interface",					"metric",					"netaddr",					"speed"				};				text.put("gw-stamLink", s);			}			{				String[] s = {					"&&sysNameFrom -> &&sysNameTo!!Interface: ##!!OSPF: ##!!Nettadr: ##!!Capacity: ##!!Last: &&linkLastPst (&&linkLast)!!(gw->lan)",					"interface",					"metric",					"netaddr",					"speed"				};				text.put("gw-lanLink", s);			}			{				String[] s = {					"&&sysNameFrom -> &&sysNameTo!!Interface: ##!!OSPF: ##!!Nettadr: ##!!Capacity: ##!!Last: &&linkLastPst (&&linkLast)!!(gw->def)",					"interface",					"metric",					"netaddr",					"speed"				};				text.put("gw-defLink", s);			}			{				String[] s = {					"&&sysNameFrom -> &&sysNameTo!!OSPF: ##!!Nettadr: ##!!Capacity: ##!!Last: &&linkLastPst (&&linkLast)!!(stam->gw)",					"metric",					"netaddr",					"speed"				};				text.put("stam-gwLink", s);			}			{				String[] s = {					"&&sysNameFrom -> &&sysNameTo!!OSPF: ##!!Nettadr: ##!!Capacity: ##!!Last: &&linkLastPst (&&linkLast)!!(lan->gw)",					"metric",					"netaddr",					"speed"				};				text.put("lan-gwLink", s);			}			{				String[] s = {

⌨️ 快捷键说明

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