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

简介:BMC,执行伺服器远端管理控制器,英文全称为Baseboard Management Controller. 为基板管理控制器。它可以在机器未开机的状态下,对机器进行固件升级、查看机器设备、等一些操作。

BMC的主要功能:

1、为远程系统管理提供IPMI v1.5 LAN消息,包括系统状态监视;重启、重新供电、断电等底板控制;FRU资讯,少量SEL资讯用入口;BIOS保护和选择。

2、为本地系统可管理性提供IPMI v1.5消息。

3、对LAN消息采用MD5签名以保证远程连接的安全性。MD5签名加上私有密码能够很好地保护系统免受外部的侵袭。

4、BIOS或OS可以将‘推进’警告作为SNMP Traps,并通过LAN报告严重事件。

5、自发地进行系统健康监视并对严重事件产生纠正动作。

6、LAN警告。

历史攻略:

远程开机:wakeonlan

开机参数:

{"ResetType": "ForceOn"}

关机:

{"ResetType": "ForceOff"}

优雅重启:

{"ResetType": "GracefulRestart"}

强制重启:相当于reboot,拔掉电源等。

{"ResetType": "ForceRestart"}

案例源码:

# -*- coding: utf-8 -*-
# time: 2022/8/14 17:22
# file: bmc.py
# 公众号: 玩转测试开发
import requests


class BMC(object):
    def __init__(self, host, username, password):
        self.host = host
        self.username = username
        self.password = password

        self.headers = {
            "content-type": "application/json"
        }
        self.session = requests.session()

        # 认证
        self.session.auth(self.username, self.password)

    def start_up(self, data):
        # 开机
        url = f'https://{self.host}/redfish/v1/Systems/1/Actions/ComputerSystem.Reset'
        response = self.session.post(url=url, verify=False, json=data, headers=self.headers)
        print(f"返回信息:{response}")

    def shut_down(self, data):
        # 关机
        url = f'https://{self.host}/redfish/v1/Systems/1/Actions/ComputerSystem.Reset'
        response = self.session.post(url=url, verify=False, json=data, headers=self.headers)
        print(f"返回信息:{response}")

    def graceful_restart(self, data):
        # 优雅重启
        url = f'https://{self.host}/redfish/v1/Systems/1/Actions/ComputerSystem.Reset'
        response = self.session.post(url=url, verify=False, json=data, headers=self.headers)
        print(f"返回信息:{response}")

    def force_restart(self, data):
        # 强制重启:相当于reboot,拔掉电源
        url = f'https://{self.host}/redfish/v1/Systems/1/Actions/ComputerSystem.Reset'
        response = self.session.post(url=url, verify=False, json=data, headers=self.headers)
        print(f"返回信息:{response}")


if __name__ == '__main__':
    host = "111.112.113.114"  # BMC地址
    username = "admin"
    password = "1234567890"
    bmc = BMC(host, username, password)
    bmc.start_up({"ResetType": "ForceOn"})
    bmc.shut_down({"ResetType": "ForceOff"})
    bmc.graceful_restart({"ResetType": "GracefulRestart"})
    bmc.force_restart({"ResetType": "ForceRestart"})

微信公众号:玩转测试开发
欢迎关注,共同进步,谢谢!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值