Python 批量操作設備的實現步驟
全民編程的時代,怎麼能少瞭測試同學的身影。最近在學習Python,剛好活學活用,來實戰一波
背景需求
某天午休未睡醒的我,突然接到一個Leader在群裡@小盆,把平臺上100臺設備硬盤都上傳一套多媒體文件,線上任務需要進行測試。
– 方案一
如果本人勤快且工作任務不多的話,可能就哼哧哼哧,一臺一臺設備操作著
- 遠程登陸設備
- 從本地把文件拷貝到設備中
- 重復前面兩個步驟
不行阿,我這邊手上還有其他任務呢,交付日期也是今天,這樣做太浪費時間瞭吧,方案一被否決
按照傳統的步驟,重復且低效,哪我去找開發去把相應的接口要過來吧
– 方案二
- 找到相關設備上傳文件的接口
- 把文件上傳到服務器,生成下載鏈接
- 使用Postman的工具去請求
- 重復第三步,更改設備IP請求
試瞭一兩次,這也太繁瑣瞭吧,每請求一臺設備,就要更改下一臺的設備IP,整個過程也沒有節省多少時間阿。
內心困惑之時,我這不正在學習瞭Python,讓Python來幫我做事吧,節省下的時間好好放松一下(^-^)V,想到的方案三
方案三
- 找到瞭相關設備功能接口
- 找研發拿到100臺設備詳情(設備都是同樣型號)
- Python寫腳本
- 運行,休息
好吶,這還差不多,話不多說,行動吧
準備工作
我們需要準備的環境
IDE:Pycharm
version: Python3.7
Python相關的庫
- http庫(request)下載:pip install request
- josn下載:用於解析URL相關的內容
前提:
分析接口請求方式、請求參數、body和返回信息(示例)
上傳文件接口: /api/Manager/dev/filetousb
請求方式: POST
請求參數: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" } ] }
關註到多媒體相關的文件都是以鏈接形式的,因此先提前把文件都上傳到服務器,生成瞭文件鏈接和文件的MD5值
使用Python request庫模擬網絡請求給設備端
Body內容是JOSN的格式,因此需要使用Python內置的josn庫
100臺設備都是不同IP,所以提前找到設備IP列表相信息,放到text文件裡,則需要使用Python文件管理去一行一行去讀取放到列表裡,這樣方便傳值進行請求
動手操作
經過上面的準備和分析,期間還去查瞭資料,(太菜瞭,盲人摸河一步一步的做)
三下五除二,一番實現調試,寫下初級小白的腳本(大佬們幫忙看看,指教指教)
import requests import json #使用的接口 usbfile = "/api/Manager/dev/filetousb" #body內容,需要上傳的文件 mediafile = { "action":"start", "file:[ { "fileurl":"http://10.22.26.21/sw_bin/media/JueJing.jpg", "filename":"JueJing.jpg", "directory":"", "filemd5":"12345678910999" } ] } #定義空的deviceiplist,用來添加測試設備的IP deviceiplist = [] # 接口請求實現方法 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" #讀取設備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() # 執行循環請求100次 for i in range(100): print(iplist[i]) time.sleep(10) # 上傳多媒體文件 # do_post(deviceiplist[i],usbfile,mediafile)
運行過程,我們就拿著省下來的時間來,搞其他事情,爭取早點下班(笑哭.jpg)
本次時間,比較緊急,腳本寫的也比較簡單,如果有更好的技能,歡迎大傢多多留言,讓我這個小白增加眼界。
總結
到此這篇關於Python 批量操作設備的實現步驟的文章就介紹到這瞭,更多相關Python 批量操作設備內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- Python爬蟲學習之requests的使用教程
- Python爬蟲Requests庫的使用詳情
- python request post 列表的方法詳解
- 詳解Python requests模塊
- Python爬蟲之requests庫基本介紹