PythonFlask实现接口接收Disk信息
今天分享的内容是基于:Python + Flask 实现接口接收内存信息 来进一步分享如何使用 Python + Flask 实现接收 Disk 的信息。
原理:
通过 Python 调用 Shell 脚本去执行 Disk 的相关命令,然后进行处理再请求 Requests 库来向后端定义好的接口推送数据。
Part1:收集端import os import requests import json import time url="http://10.8.31.61:5555/GetDiskResource" mem_data={} mem_cmd = [ "df -h |grep home |awk -F" " "{print $2}"", "df -h |grep home |awk -F" " "{print $3}"", "df -h |grep home |awk -F" " "{print $4}"" ] def exec_cmd(): for cmd in mem_cmd: print(cmd) response = os.popen(cmd) if("$2" in cmd): mem_data["total"]=str(response.read()).replace(" ","") elif("$3" in cmd): mem_data["used"]=str(response.read()).replace(" ","") elif("$4" in cmd): mem_data["available"]=str(response.read()).replace(" ","") else: mem_data["hostname"]=str(os.popen("hostname |awk -F"." "{print $1}" |awk -F"-" "{print $2}"").read()).replace(" ","") response.close() def httpPost(datas): header = {"Content-Type":"application/json"} resp_content = requests.post(url=url,data=json.dumps(datas),headers=header) print(resp_content.text) if __name__ == "__main__": while True: exec_cmd() httpPost(mem_data) time.sleep(3600)
Part2:接收端#磁盘路由处理------------------------------------------------------- @resource.route("/GetDiskResource",methods=["POST"]) def GetDiskResource(): """接收来自linux上传的数据""" query = request.get_json() hostname = query["hostname"] total = query["total"] used = query["used"] available = query["available"] createtime = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()) sql = "insert into disk_info (hostname,total,used,available,create_time) VALUES " data = "("" + hostname + "","" + total + "","" + used + "","" + available + "","" + str(createtime) + """ end = data + ")" sql = sql + end print(sql) db = conndb() db.execute_sql(sql) data = {"code": 200, "message": "success", "status": "10000"} return json.dumps(data)
Part3:展示端
这部分主要分为以下两块内容: 第一块是页面请求 磁盘信息 搜索 {{ scope.row.available }}
第二块是后端请求处理@resource.route("/getDiskList",methods=["POST"]) def getDiskList(): """fe的页面列表数据获取""" query = request.get_json() print(query) if (query["hostname"] == ""): sql1 = "select id,hostname,total,used,available,create_time from disk_info order by id DESC limit " + str( (query["pageIndex"] - 1) * query["pageSize"]) + "," + str(query["pageSize"]) count_sql = "select count(*) from disk_info" colume_sql = "select id from disk_info" else: sql1 = "select id,hostname,total,used,available,create_time from mem_info where hostname like "%" + str(query["hostname"]) + "%" order by id DESC" + " limit " + str( (query["pageIndex"] - 1) * query["pageSize"]) + "," + str(query["pageSize"]) count_sql = "select count(*) from disk_info where hostname like "%" + str( query["hostname"]) + "%" order by id DESC" colume_sql = "select id from disk_info" sql2 = "select id,hostname,total,used,available,create_time from disk_info" db = conndb() listdata = db.get_data(sql1, sql2) db = conndb() result = db.get_data(count_sql, colume_sql) print(result) pageTotal = result[0]["id"] print(listdata) print(pageTotal) data = {"listdata": listdata, "pageTotal": pageTotal, "code": 200} return json.dumps(data)
Part4:页面展示