Python 批量操作設(shè)備的實現(xiàn)步驟
全民編程的時代,怎么能少了測試同學的身影。最近在學習Python,剛好活學活用,來實戰(zhàn)一波
背景需求
某天午休未睡醒的我,突然接到一個Leader在群里@小盆,把平臺上100臺設(shè)備硬盤都上傳一套多媒體文件,線上任務(wù)需要進行測試。
- 方案一
如果本人勤快且工作任務(wù)不多的話,可能就哼哧哼哧,一臺一臺設(shè)備操作著
- 遠程登陸設(shè)備
- 從本地把文件拷貝到設(shè)備中
- 重復前面兩個步驟
不行阿,我這邊手上還有其他任務(wù)呢,交付日期也是今天,這樣做太浪費時間了吧,方案一被否決
按照傳統(tǒng)的步驟,重復且低效,哪我去找開發(fā)去把相應(yīng)的接口要過來吧
- 方案二
- 找到相關(guān)設(shè)備上傳文件的接口
- 把文件上傳到服務(wù)器,生成下載鏈接
- 使用Postman的工具去請求
- 重復第三步,更改設(shè)備IP請求
試了一兩次,這也太繁瑣了吧,每請求一臺設(shè)備,就要更改下一臺的設(shè)備IP,整個過程也沒有節(jié)省多少時間阿。
內(nèi)心困惑之時,我這不正在學習了Python,讓Python來幫我做事吧,節(jié)省下的時間好好放松一下(^-^)V,想到的方案三
方案三
- 找到了相關(guān)設(shè)備功能接口
- 找研發(fā)拿到100臺設(shè)備詳情(設(shè)備都是同樣型號)
- Python寫腳本
- 運行,休息
好吶,這還差不多,話不多說,行動吧
準備工作
我們需要準備的環(huán)境
IDE:Pycharm
version: Python3.7
Python相關(guān)的庫
- http庫(request)下載:pip install request
- josn下載:用于解析URL相關(guān)的內(nèi)容
前提:
分析接口請求方式、請求參數(shù)、body和返回信息(示例)
上傳文件接口: /api/Manager/dev/filetousb
請求方式: POST
請求參數(shù):Content-Type = application/json
Body : {
"action":"start",
"file:[
{
"fileurl":"http://10.22.26.21/sw_bin/media/JueJing.jpg",
"filename":"JueJing.jpg",
"directory":"",
"filemd5":"12345678910999"
}
]
}
關(guān)注到多媒體相關(guān)的文件都是以鏈接形式的,因此先提前把文件都上傳到服務(wù)器,生成了文件鏈接和文件的MD5值
使用Python request庫模擬網(wǎng)絡(luò)請求給設(shè)備端
Body內(nèi)容是JOSN的格式,因此需要使用Python內(nèi)置的josn庫
100臺設(shè)備都是不同IP,所以提前找到設(shè)備IP列表相信息,放到text文件里,則需要使用Python文件管理去一行一行去讀取放到列表里,這樣方便傳值進行請求
動手操作
經(jīng)過上面的準備和分析,期間還去查了資料,(太菜了,盲人摸河一步一步的做)
三下五除二,一番實現(xiàn)調(diào)試,寫下初級小白的腳本(大佬們幫忙看看,指教指教)
import requests
import json
#使用的接口
usbfile = "/api/Manager/dev/filetousb"
#body內(nèi)容,需要上傳的文件
mediafile = {
"action":"start",
"file:[
{
"fileurl":"http://10.22.26.21/sw_bin/media/JueJing.jpg",
"filename":"JueJing.jpg",
"directory":"",
"filemd5":"12345678910999"
}
]
}
#定義空的deviceiplist,用來添加測試設(shè)備的IP
deviceiplist = []
# 接口請求實現(xiàn)方法
def do_post(ip,api,data):
headers = {"Content-Type": "application/json"}
url = "http://"+ip+ ":8080" + api
print (url)
try:
r = requests.post(url,headers = headers,data = json.dumps(data),timeout= 10)
print(r.status_code)
print(r.content.decode("utf-8"))
except requests.exceptions.ConnectionError:
requests.status_code = "Connection refused"
#讀取設(shè)備IP文件,并添加到列表里
with open( "deviceip.txt","r") as f:
while True:
line = f.readline()
if not line:
break
else:
ip = [i for i in line]
deviceiplist.append(ip)
f.close()
# 執(zhí)行循環(huán)請求100次
for i in range(100):
print(iplist[i])
time.sleep(10)
# 上傳多媒體文件
# do_post(deviceiplist[i],usbfile,mediafile)

運行過程,我們就拿著省下來的時間來,搞其他事情,爭取早點下班(笑哭.jpg)
本次時間,比較緊急,腳本寫的也比較簡單,如果有更好的技能,歡迎大家多多留言,讓我這個小白增加眼界。
總結(jié)
到此這篇關(guān)于Python 批量操作設(shè)備的實現(xiàn)步驟的文章就介紹到這了,更多相關(guān)Python 批量操作設(shè)備內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python中可以發(fā)生異常自動重試庫retrying
這篇文章主要介紹了python中可以發(fā)生異常自動重試庫retrying,retrying是一個極簡的使用Python編寫的庫,主題更多相關(guān)內(nèi)容需要的朋友可以參考一下2022-06-06
Python開發(fā)之Nginx+uWSGI+virtualenv多項目部署教程
這篇文章主要介紹了Python系列之-Nginx+uWSGI+virtualenv多項目部署教程,本文通過實例代碼給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下2019-05-05

