程序猿全敏的gravatar头像
程序猿全敏2016-11-07 11:45:15

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

如何运行请参考博客:关于“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和python结合项目,实现ajax+echarts显示端口占用数监控

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

然后就开始用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显示端口占用数监控

希望对大家有所帮助,我做的都是些监控之类的东西。

不懂的地方可以加我qq 1610656207 备注最代码


最代码官方编辑于2016-11-7 21:35:14

打赏

文件名:dk.rar,文件大小:1375.598K下载
  • /
      • /dk
        • /dk/.classpath
        • /dk/.project
          • /dk/.settings
            • /dk/.settings/.jsdtscope
            • /dk/.settings/org.eclipse.jdt.core.prefs
            • /dk/.settings/org.eclipse.wst.common.component
            • /dk/.settings/org.eclipse.wst.common.project.facet.core.xml
            • /dk/.settings/org.eclipse.wst.jsdt.ui.superType.container
            • /dk/.settings/org.eclipse.wst.jsdt.ui.superType.name
最代码最近下载分享源代码列表最近下载
wangshixi2010 LV22020年8月21日
星星星星
wjschm LV142020年4月27日
月亮月亮月亮星星星星
huaua7676 LV232020年1月15日
太阳月亮星星星星星星
benyan LV82019年4月29日
月亮月亮
阿毛123456 LV132019年4月14日
月亮月亮月亮星星
dmzhjg LV62018年8月31日
月亮星星星星
shiwenliang LV52018年5月30日
月亮星星
byj1987 LV182018年5月13日
太阳星星星星
VINCENT_CHEN94 LV82018年1月19日
月亮月亮
liu164053 LV52017年12月27日
月亮星星
最代码最近浏览分享源代码列表最近浏览
ewan007 LV132月2日
月亮月亮月亮星星
sanyonj LV91月30日
月亮月亮星星
fu8867 LV21月26日
星星星星
weepdf LV81月9日
月亮月亮
qqqq111111 LV21月3日
星星星星
502882 LV72020年12月25日
月亮星星星星星星
George815 LV12020年12月3日
星星
luo842160255 LV32020年11月10日
星星星星星星
cc900118 LV152020年10月23日
月亮月亮月亮星星星星星星
a123456sssss LV82020年9月20日
月亮月亮
顶部客服微信二维码底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友