使用Python实现Wake On Lan远程开机
在A主机上执行Python代码,唤醒B主机,让B主机开机,以下内容和代码亲测可用。
需要在B主机上进行以下设置。
1,启用网卡的唤醒功能。

可以在 CMD 或 Powershell 中使用 powercfg /a 命令查询目前系统上所有可用的、硬件可支持的“睡眠”策略:
不启用快速开机是关键
在A主机上执行下面的Python代码就可以远程唤醒B主机。
python发送网络唤醒的代码如下:
需要修改的只有下面的 Mac 地址和 发广播的局域网广播地址。
wake_up(mac='CC-33-55-66-AA-21'): 这里的 “CC-33-55-66-AA-21” 是B主机的MAC地址。
BROADCAST = "192.168.31.255" 这里是局域网发广播的地址。
import socket import time import struct def wake_up(mac='CC-33-55-66-AA-21'): MAC = mac BROADCAST = "192.168.31.255" if len(MAC) != 17: raise ValueError("MAC address should be set as form 'XX-XX-XX-XX-XX-XX'") mac_address = MAC.replace("-", '') data = ''.join(['FFFFFFFFFFFF', mac_address * 20]) # 构造原始数据格式 send_data = b'' # 把原始数据转换为16进制字节数组, for i in range(0, len(data), 2): send_data = b''.join([send_data, struct.pack('B', int(data[i: i + 2], 16))]) # print(send_data) # 通过socket广播出去,为避免失败,间隔广播三次 try: sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) sock.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1) sock.sendto(send_data, (BROADCAST, 7)) time.sleep(1) sock.sendto(send_data, (BROADCAST, 7)) time.sleep(1) sock.sendto(send_data, (BROADCAST, 7)) print("Done") except Exception as e: print(e) wake_up()
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 实操Deepseek接入个人知识库
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· 【.NET】调用本地 Deepseek 模型
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库