python远程操控超微服务器(IPMI)、电脑开机(WOL)
python操控服务器
大多服务器主板都是带有IPMI,因此对于服务器的管理就变得简单了,常见的管理方式是IPMI工具,IPMITOOL、IPMIUTIL 等,需要经过一定的配置,将所有服务器集中在一台主机上进行管理。 ipmiutil和ipmitool命令学习
但是我只有一台服务器,这样管理显然太复杂了。超微主板 supermicro X11spa-t 自带网页管理,打开IPMI的地址,输入账号、密码即可直接进行开机、关机、重启,查看物理硬件信息等一切IPMI支持的操作。但是每次打开网页管理还是太费时间了。
于是,就有了,下面这个python脚本管理:(直接用爬虫代替网页管理,嘎嘎,方便多了)
# -*- coding: utf-8 -*-
import requests,timeheaders1 = {
'Accept': 'text/javascript, text/html, application/xml, text/xml, */*',
'Accept-Encoding': 'gzip, deflate, br',
'Accept-Language': 'zh-CN,zh;q=0.9,en-CN;q=0.8,en;q=0.7',
'Cache-Control': 'no-cache',
'Connection': 'keep-alive',
'Content-type': 'application/x-www-form-urlencoded; charset=UTF-8',
'DNT': '1',
'Host': '192.192.192.192',
'Origin': 'https://192.192.192.192',
'Pragma': 'no-cache',
'Referer': 'https://192.192.192.192/cgi/url_redirect.cgi?url_name=topmenu',
'sec-ch-ua': "'Chromium';v='88', 'Google Chrome';v='88', ';Not A Brand';v='99'",
'sec-ch-ua-mobile': '?0',
'Sec-Fetch-Dest': 'empty',
'Sec-Fetch-Mode': 'cors',
'Sec-Fetch-Site': 'same-origin',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.190 Safari/537.36',
'X-Prototype-Version': '1.5.0',
'X-Requested-With': 'XMLHttpRequest'}# 操作参数,这个参数估计全网独一份,哈哈。
data0 = {'op':'POWER_INFO.XML','r':'(0,0)','_':''} #查询当前状态,开机还是关机。
data1 = {'op':'POWER_INFO.XML','r':'(1,1)','_':''} #开机
data3 = {'op':'POWER_INFO.XML','r':'(1,3)','_':''} #重启
data5 = {'op':'POWER_INFO.XML','r':'(1,5)','_':''} #关机sent_time = time.strftime("%Y-%m-%d %H:%M")
sent_message = "空"#登录网站
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.190 Safari/537.36'}
data = {'name':'ADMIN','pwd':'DLZXPOEXCS'}
url ='https://192.192.192.192/cgi/login.cgi'
session = requests.Session()
login = session.post(url,headers = headers,data = data,verify=False)#检查开机状态并开机
response = session.post('https://192.192.192.192/cgi/ipmi.cgi',data = data0,headers = headers1,verify=False)
if response.status_code in [200]:if "OFF" in response.text:response1 = session.post('https://192.192.192.192/cgi/ipmi.cgi', data=data1, headers=headers1, verify=False)if response1.status_code in [200]:sent_message = "执行开机"else:sent_message = "开机失败"else:sent_message = "已经开机"
else:sent_message = "开机失败,请检查网络"warning = sent_time + sent_message
requests.get(url='https://sc.ftqq.com/abcdefghigklmnopqrstuvwxyz.send?text=' + warning) #用方糖发送开机信息到微信。
python操控老笔记本开机
必须得是带网络唤醒功能的笔记本,首先进入boss中开启Wake-On-LAN,然后修改以下脚本的mac地址,如果要指定外部主机,需要设置端口转发。
脚本来源 :https://github.com/remcohaszing/pywakeonlan
#!/usr/bin/env python3
"""
Small module for use with the wake on lan protocol.
"""
import argparse
import socket
from typing import List# 如果要指定外部主机。请注意,需要在该主机上进行端口转发。
BROADCAST_IP = "255.255.255.255" #发送魔术包的IP地址默认值,因为没开机,电脑没有IP地址,所以需要将魔术包进行广播。
DEFAULT_PORT = 9 #端口默认值def create_magic_packet(macaddress: str) -> bytes: # 创建魔术包,该函数须带mac地址参数。"""Create a magic packet.A magic packet is a packet that can be used with the for wake on lanprotocol to wake up a computer. The packet is constructed from themac address given as a parameter.Args:macaddress: the mac address that should be parsed into a magic packet."""if len(macaddress) == 17:sep = macaddress[2]macaddress = macaddress.replace(sep, "")elif len(macaddress) != 12:raise ValueError("Incorrect MAC address format")return bytes.fromhex("F" * 12 + macaddress * 16)# 发送魔术包
def send_magic_packet(*macs: str, ip_address: str = BROADCAST_IP, port: int = DEFAULT_PORT
) -> None:"""Wake up computers having any of the given mac addresses.Wake on lan must be enabled on the host device.Args:macs: One or more macaddresses of machines to wake.Keyword Args:ip_address: the ip address of the host to send the magic packet to.port: the port of the host to send the magic packet to."""packets = [create_magic_packet(mac) for mac in macs]with socket.socket(socket.AF_INET, socket.SOCK_DGRAM) as sock:sock.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)sock.connect((ip_address, port))for packet in packets:sock.send(packet)if __name__ == "__main__":send_magic_packet('ff.ff.ff.ff.ff.ff')
如果要对外部主机进行网络唤醒,需要知道:IPV4 协议详解 + 子网掩码
- 主机部分全为 “0” 的 IP 地址,称为网络地址,网络地址用来标识一个网段。例如,A 类地址 1.0.0.0,私有地址 10.0.0.0, 192.168.1.0。
- 主机部分全为 “1” 的 IP 地址,称为网段广播地址,广播地址用于标识一个网络的所有主机。例如,10.255.255.255 , 192.168.1.255 等,路由器可以在 10.0.0.0 或者 192.168.1.0 等网段转发广播包。广播地址用于向本网段的所有节点发送数据包。
- 对于网络部分为 127 的 IP 地址,例如 127.0.0.1 往往用于环路测试目的。
- 全 “0” 的 IP 地址 0.0.0.0 代表所有的主机,路由器用 0.0.0.0 地址指定默认路由。
- 全 “1” 的 IP 地址 255.255.255.255,也是广播地址,但 255.255.255.255 代表所有主机,用于向网络的所有节点发送数据包,这样的广播不能被路由器转发。
使用后记:
255.255.255.255是一种特殊的子网掩码,192.168.2.255是广播地址(内网网段192.168.2.1~254),广播包的目标IP。向这两个地址发送魔术包都可以实现开机。但是如果要设置外网远程开机,有些路由器是不能将255.255.255.255设置端口转发的,只能用192.168.2.255来进行远程唤醒,端口号通常是9。另外,远程唤醒魔术包的发送是走udp协议,不是stp,要留意。
python远程操控超微服务器(IPMI)、电脑开机(WOL)相关推荐
- 超微服务器主板ipmi证书,超微主板的服务器使用IPMI远程安装操作系统教程
今天给大家分享的这篇文章是<超微主板的服务器使用IPMI远程安装操作系统教程>,希望对大家有用,一般这类的教程都是通用的...适合大部分带IPMI功能的超微主板. 通俗来说,IPMI(智能 ...
- 超微服务器使用IPMI安装操作系统小记
通俗来说,IPMI(智能型平台管理接口,IntelligentPlatform Management Interface)可以控制服务器电源的开机.关机.重启,远程重装服务器操作系统,并可监视服务器的 ...
- 超微服务器安装Linux,超微服务器使用IPMI安装操作系统
通俗来说,IPMI(智能型平台管理接口,IntelligentPlatform Management Interface)可以控制服务器电源的开机.关机.重启,远程重装服务器操作系统,并可监视服务器的 ...
- 使用IPMI安装操作系统--超微服务器为例,以及ipmivier安装与使用
转载整合声明: 转载地址1:http://www.mamicode.com/info-detail-395844.html 转载地址2:CENTOS6.3下WEB远程IPMI管理 | 一路向北 介绍: ...
- 超微服务器如何查看服务器信息,超微服务器远程
超微服务器远程 内容精选 换一换 华为云帮助中心,为用户提供产品简介.价格说明.购买指南.用户指南.API参考.最佳实践.常见问题.视频帮助等技术文档,帮助您快速上手使用华为云服务. 由于在安全软件中 ...
- 如果恰巧有一台超微服务器,如何调节风扇转速
超微服务器有三个网口,和其他两个分开的那个网口就是IPMI的管理口,这个管理口下面应该是几个USB口. 将IPMI管理口与其他的一个数据网口连接:鼠标.键盘.显示器直接连接服务器. 开机按DELETE ...
- 超微服务器开机启动项目怎么设置,超微服务器启动项设置
超微服务器启动项设置 内容精选 换一换 随着网络IO的带宽不断提升,单核CPU处理网络中断存在瓶颈,不能完全满足网卡的需求,通过开启网卡多队列功能,您可以将弹性云服务器中的网卡中断分散给不同的CPU处 ...
- 超微服务器 旧系统盘 新服务器,超微服务器做系统
超微服务器做系统 内容精选 换一换 本节主要介绍Taishan数据库解决方案MySQL数据库场景下,使能华为新一代NVMe PCIe固态硬盘ES3000 V5的原子写特性的配置环境要求.硬件要求如表1 ...
- 超微服务器如何查看服务器信息,超微服务器
超微服务器 内容精选 换一换 应用管理与运维平台(ServiceStage)是一个应用托管和微服务管理平台,可以帮助企业简化部署.监控.运维和治理等应用生命周期管理工作.面向企业提供微服务.移动和We ...
最新文章
- 循环输入正整数,求其平均值
- shiro之AuthenticationStrategy
- 分数阶累加的Python实现
- 模拟退火算法求解旅行商问题(python实现)
- SaeStorage使用示例
- 【Luogu3931】SAC E#1 - 一道难题 Tree
- 什么是实验室人员比对人员_CNAS实验室认可对人员、设备的要求
- 香肠派对电脑版_《香肠派对》是不是除了《和平精英》最成功的吃鸡手游:靠恶搞火了?...
- 二维数组各行求和_数组入门 | 数组的维度和尺寸
- expect学习笔记及实例详解【转】
- 程序员选择公司的8个标准
- espcms /public/class_connector.php intval truncation Vul Arbitrary User Login
- qdir 类似工具_Qdir中文版|多窗口资源管理器下载_最火软件站
- cubase手机版android,Cubase中文应用
- 这难道是原子、比特and供应链的新内涵?京东如是说……
- 服务器安全狗的日志在哪儿 文件位置,服务器安全狗 防护日志功能介绍
- 谷歌学术首页url爬取
- iOS 蓝牙开发 BabyBluetooth蓝牙库介绍
- 微软面试题之数字谜题 (转)
- java 登录注册小程序