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发送