tft每日頭條

 > 科技

 > python通過wifi發送數據

python通過wifi發送數據

科技 更新时间:2024-09-07 21:21:33

python通過wifi發送數據?背景:對服務器手工上下電比較麻煩,需要登錄服務器的ILO口頁面,然後進行關機(如果直接掉電服務器的電源可能會影響到硬件以及軟件),下面的代碼通過調用服務器提供的接口信息自動實現對多個服務器實行上下電的操作需要提前将服務器的用戶名和密碼輸入到devicePower.csv文件中保存,我來為大家科普一下關于python通過wifi發送數據?以下内容希望對你有幫助!

python通過wifi發送數據(通過python實現批量對服務器的電源進行上下電操作)1

python通過wifi發送數據

背景:對服務器手工上下電比較麻煩,需要登錄服務器的ILO口頁面,然後進行關機(如果直接掉電服務器的電源可能會影響到硬件以及軟件),下面的代碼通過調用服務器提供的接口信息自動實現對多個服務器實行上下電的操作。需要提前将服務器的用戶名和密碼輸入到devicePower.csv文件中保存。

另外腳本涉及到多個模塊,需要在python中提前部署和安裝

## 實現在服務器ILO口頁面對服務器的電源進行各種操作,代碼接口依賴于不同服務器廠商,僅供參考 import requests import urllib3 import json import pandas as pd import numpy as np #腳本文件和excel表格放罝路徑,可以自己調整 workpath = "D:/" #參數取值:On:上電:ForceOff:強制下電:Gracefulshutdown:正常關機:ForceRestart:強制重啟 powerParm ="On" #通過ssl._create_unverified_context全局取消證書驗證 ssl._create_default_https_context = ssl._create unverified_context #強制取消未經驗證的HTTPS url的警告信息 url1ib3.disable_warnings() #輸入:csv格式,存放交換機的ip地址:用戶名和密碼,格式如下: #deviceIP Username Password #192.36.1.139 root adn123456 path = workpath '/devicePower.csv' #以下步驟将excel文檔内容解析成列表的形式,便于後續的進一步解析 dataframe = pd.read_csv(path, encoding=" gb18030") #将dataframe轉換成數組 data = np.array(dataframe) #再将數組轉換成列表 data_list = data.tolist() #公共部分 headers = { "User-Agent": "Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.67 Mobile Safari/537.36", "Accept-Encoding": "gzip, deflate, br", "content-type": "application/json; charset=utf-8" } index = 0 for item in data_list: #獲取設備工地址,登錄用戶名,密碼 host_ip = item[0] username = item[1] password= item[2] #刨建會話的頁面 url_session = "https://" host_ip "/SessionService/Sessions" #會話請求體 FormData = {'UserName': username, 'Password': password} resp = "" #先定義變量,否則在下面try語句的except無法使用該變量 try: resp = requests.post(url_session, data=json.dumps (FormData), headers=headers, verify=False) except: print("========== %d ================登錄服務器 %s 失敗" % (index, host_ip)) index = index 1 continue if resp.status_code == 201: print("========== %d ================登錄服務器 %s 成功" % (index, host_ip)) index = index 1 else: print("========== %d ================服務器 %s 不支持,請升級HDM或者BIOS,返回碼:%s,返回錯誤信息:\n%s" % (index, host_ip, str(resp.status_code), resp.text)) index = index 1 continue #獲取token值,用于後續的操作 token = resp.headers["X-Auth-Token"] #服務器電源進行採作 url_power = "https://" host_ip "/Actions/1.Reset" #利用上面步驟獲取到的token更新本次請求體的報文頭 headers.update({'X-Auth-Token': token}) request_body= json.dumps({"ResetType": powerParm}) resp_power = requests.post(url_power, data=request_body, headers=headers, verify=False) if resp_power.status_code == 204 or resp_power.status_code == 200: print("對當前服務器電源進行 %s 操作成功,返回碼:%s " % (powerParm, resp_power.status_code)) else: print("登錄服務器 %s 失敗,返回碼:%s,返回錯誤信息:%s" % (host_ip, str(resp_power.status_code), resp_power.text)) print("========== 執行結束 ================ ")

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关科技资讯推荐

热门科技资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved