java和python结合项目,实现ajax+echarts显示端口占用数监控

Posted 程序猿全敏

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java和python结合项目,实现ajax+echarts显示端口占用数监控相关的知识,希望对你有一定的参考价值。

今天给大家分享一个之前做的端口占有数的监控项目

项目经理提出要监控好几个服务器的端口的占有数,就要我想办法,其实这个开始觉得这个好像很难的样子,后来想通了就很简单了。就是那个echarts这个我也是听伊成,饕餮他们说的,然后我就打开了echart的官网,他们要我自学echarts,我才不去学。直接在官网复制一个demo,静态数据,看起来还是很ok的。

然后整理思路:

首先是用python执行cmd命令,输出端口数的文本放到本地,java就调用文本里面的内容显示在界面上。思路都清楚了,就开始代码实现了。

python代码执行cmd命令,输出端口数的代码

import re
import os
from threading import Timer
import time
def execCmd(cmd):
	r = os.popen(cmd)
	text = r.read()
	r.close()
	return text
def sleeptime(hour,min,sec):
	return hour*3600 + min*60 + sec;
second = sleeptime(0,0,60);
while 1==1:
	time.sleep(second);
	#if __name__ == '__main__':
	cmd = 'netstat -an |find /c ":80"'
	cmd1 = 'netstat -an |find /c ":8080"'
	cmd2 = 'netstat -an |find /c ":8888"'
	cmd3 = 'netstat -an |find /c ":8080"'
	result = execCmd(cmd)
	result1 = execCmd(cmd1)
	result2 = execCmd(cmd2)
	result3 = execCmd(cmd3)
	print("80端口数为:"+result)
	print("8080端口数为:"+result1)
	print("8888端口数为:"+result2)
	print("8080端口数为:"+result3)
	x = open("test.txt", 'a')
	f =open("test2.txt",'a')
	y=open("test3.txt",'a')
	z=open("test4.txt",'a')
	x.write(result)
	f.write(result1)
	y.write(result2)
	z.write(result3)
	x.close()
	f.close()
	y.close()
	z.close()

	

cmd命名每1分钟执行一次,得到的结果如图

同时同路径下得到几个文本。输出这么多的端口是为了便于查看,看起来就是高端大气的感觉

然后就开始用java代码调用文本

public static Object[] readTxtFile(String filePath) 
		InputStreamReader read = null;
		BufferedReader bufferedReader = null;
		Object[] result = null;
		try 
			String encoding = "GBK";
			File file = new File(filePath);
			if (file.isFile() && file.exists())  // 判断文件是否存在
				read = new InputStreamReader(
						new FileInputStream(file), encoding);// 考虑到编码格式
				bufferedReader = new BufferedReader(read);
				String lineTxt = null;
				ArrayList<String> list = new ArrayList<String> ();
				while ((lineTxt = bufferedReader.readLine()) != null) 
			        list.add (lineTxt);
				
				result = list.toArray ();
			 else 
				System.out.println("找不到指定的文件");
			
		 catch (Exception e) 
			System.out.println("读取文件内容出错");
			e.printStackTrace();
		 finally 
			try 
				if (bufferedReader != null) 
					bufferedReader.close();
				if (read != null) 
					read.close();
			 catch (IOException e) 
				e.printStackTrace();
			
		
		return result;
	

根据echarts demo 把得到的数据封装成json格式

String[] categories = "192.168.15.130的80端口";  
		String[] categories2 = "192.168.15.130的8080端口";
		String[] categories3 = "192.168.15.131的80端口";
		String[] categories4 = "192.168.15.131的8080端口";
	    Object[] values = Port.readTxtFile(filePath);
	    Object[] values2 = Port.readTxtFile(filePath2);
	    Object[] values3 = Port.readTxtFile(filePath3);
	    Object[] values4 = Port.readTxtFile(filePath4);
	    Map<String, Object> json = new HashMap<String, Object>(); 
	    json.put("categories", categories);
	    json.put("categories2", categories2); 
	    json.put("categories3", categories3); 
	    json.put("categories4", categories4); 
	    json.put("values", values);
	    json.put("values2", values2);
	    json.put("values3", values3);
	    json.put("values4", values4);
	    PrintWriter out = response.getWriter();
	    out.write(JsonUtil.toJson(json));

然后前端取得数据

希望对大家有所帮助


以上是关于java和python结合项目,实现ajax+echarts显示端口占用数监控的主要内容,如果未能解决你的问题,请参考以下文章

如何将 AJAX 与 Google App Engine (Python) 结合使用

项目一众筹网04_4_角色维护删除_单条删除和批量删除怎么实现_确认提示,,你真的要删除吗__@RequestBody和@ResponseBody结合使用_全选功能_前端获取id发到后端_ajax发送

项目一众筹网04_4_角色维护删除_单条删除和批量删除怎么实现_确认提示,,你真的要删除吗__@RequestBody和@ResponseBody结合使用_全选功能_前端获取id发到后端_ajax发送

Struts2结合Ajax实现登录

强大的ETL工具fme和python结合实现不动产登记确权项目入库扫描件自动分类归档

python selenium结合PhantomJS对ajax异步页面进行压测或者爬虫