Python:requests + BMC 获取和设置服务器风速

简介:服务器风扇速率和控制在BMC中是一个很重要的功能,在服务器中风扇是非常高速也耗电的,根据统计在数据中心的运维成本上,电费占6-7成,并且如果让风扇长期处在全转状态也会有噪音和耗损度的问题。一般而言,获取服务器的风扇速度和控制需要先登录服务器,然后获取风扇,控制风速的模式或者百分比,这个过程是比较繁琐的,特别需要经常开关机换卡等操作时,为了防止未满速运行风扇造成设备过热,往往需要人工登录查看核实和调整。

历史攻略:

Python:requests + bmc开机、关机、优雅重启、强制重启

远程开机:wakeonlan

requests手动添加cookies

http库三剑客:requests

win10:笔记本设置风扇转速

实现思路:本质是cookie免登录。

1、手动登录

2、获取cookie

3、通过requests发送请求获取或者修改

操作步骤:需要注意的是有条件的话最好是单独开设一个账户用于管理风扇。

1、手动登录:略

2、获取cookie

Python:requests + BMC 获取和设置服务器风速_第1张图片

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)

运行获取风速:

Python:requests + BMC 获取和设置服务器风速_第2张图片

运行调整风速百分比:

Python:requests + BMC 获取和设置服务器风速_第3张图片

你可能感兴趣的:(心得体会,python,服务器,开发语言)