Python:requests + BMC 获取和设置服务器风速
服务器风扇速率和控制在BMC中是一个很重要的功能,在服务器中风扇是非常高速也耗电的,根据统计在数据中心的运维成本上,电费占6-7成,并且如果让风扇长期处在全转状态也会有噪音和耗损度的问题。一般而言,获取服务器的风扇速度和控制需要先登录服务器,然后获取风扇,控制风速的模式或者百分比,这个过程是比较繁琐的,特别需要经常开关机换卡等操作时,为了防止未满速运行风扇造成设备过热,往往需要人工登录查看核实和调
·
简介:服务器风扇速率和控制在BMC中是一个很重要的功能,在服务器中风扇是非常高速也耗电的,根据统计在数据中心的运维成本上,电费占6-7成,并且如果让风扇长期处在全转状态也会有噪音和耗损度的问题。一般而言,获取服务器的风扇速度和控制需要先登录服务器,然后获取风扇,控制风速的模式或者百分比,这个过程是比较繁琐的,特别需要经常开关机换卡等操作时,为了防止未满速运行风扇造成设备过热,往往需要人工登录查看核实和调整。
历史攻略:
Python:requests + bmc开机、关机、优雅重启、强制重启
实现思路:本质是cookie免登录。
1、手动登录
2、获取cookie
3、通过requests发送请求获取或者修改
操作步骤:需要注意的是有条件的话最好是单独开设一个账户用于管理风扇。
1、手动登录:略
2、获取cookie
3、通过requests发送请求获取或者修改
案例源码:
# -*- coding: utf-8 -*-
# time: 2023/3/12 12:16
# file: fan.py
# 公众号: 玩转测试开发
import requests
import warnings
warnings.filterwarnings("ignore")
def get_fans_speed(ip, username="admin", password="admin"):
headers = {
"content-type": "application/json",
"User-Agent": r"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36",
"X-CSRFTOKEN": "PZYlUuJk",
"Cookie": "i18next=zh-cn; lang=zh-cn; QSESSIONID=ef420de2050a7efacecN26J61JI0tlTj; refresh_disable=1",
}
s = requests.session()
s.auth = (username, password)
# BMC地址ip:192.168.1.xxx
url = 'https://192.168.1.1/api/status/fan_info'
response = s.get(url=url, verify=False, headers=headers)
response.encoding = "utf-8"
print(f"返回信息:{response}")
fan_speed_percent_list = []
for i in response.json()["fans"]:
for k, v in i.items():
if k == "speed_percent":
fan_speed_percent_list.append(v)
print("fan_number:", len(fan_speed_percent_list))
print(fan_speed_percent_list)
def change_fans(ip, username="admin", password="admin"):
headers = {
"content-type": "application/json",
"User-Agent": r"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36",
"X-CSRFTOKEN": "fwd6lS4i",
"Cookie": "i18next=zh-cn; lang=zh-cn; QSESSIONID=d9490daf3b0a7ee293UBtgzJiMomddNK; refresh_disable=1",
}
s = requests.session()
s.auth = (username, password)
# BMC地址ip:192.168.1.xxx
url = 'https://192.168.1.1/api/settings/fan/2'
data = {"duty": 100}
response = s.put(url=url, json=data, verify=False, headers=headers)
response.encoding = "utf-8"
print(f"返回信息:{response}")
print("r:", response.json())
if __name__ == '__main__':
ip = "192.168.1.1"
# login()
get_fans_speed(ip)
# change_fans(ip)
运行获取风速:
运行调整风速百分比:
更多推荐
所有评论(0)