今天分享的内容是基于:测试开发: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("\n","")
elif("$3" in cmd):
mem_data['used']=str(response.read()).replace("\n","")
elif("$4" in cmd):
mem_data['available']=str(response.read()).replace("\n","")
else:
mem_data['hostname']=str(os.popen("hostname |awk -F'.' '{print $1}' |awk -F'-' '{print $2}'").read()).replace("\n","")
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:页面展示
送给大家一句话,共勉:当我们能力不足的时候,首先要做的是内修!当我们能力足够强大的时候,就可以外寻了!
下面这份资源,对于想学习【软件测试】的朋友来说应该是最全面最完整的备战仓库,希望也能帮助到你!