测试开发,Python + Flask 实现接口接收 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("\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:展示端

这部分主要分为以下两块内容:

第一块是页面请求






第二块是后端请求处理

@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:页面展示

测试开发,Python + Flask 实现接口接收 Disk 信息_第1张图片

最后

送给大家一句话,共勉:当我们能力不足的时候,首先要做的是内修!当我们能力足够强大的时候,就可以外寻了!


资源分享

下面这份资源,对于想学习【软件测试】的朋友来说应该是最全面最完整的备战仓库,希望也能帮助到你!在这里插入图片描述

你可能感兴趣的:(python,flask,后端,测试开发,软件测试)