通过Python实现Wake On Lan远程开机

Wake-On-LAN简称WOL,是一种电源管理功能;它是由IBM公司提出的网络唤醒标准,目前该标准已被大多数主板厂商支持。支持该标准的主板允许从远程通过网络唤醒计算机,也就是远程开机。

先看下使用Python实现WakeOn Lan远程开机功能,具体介绍如下:

创建魔法唤醒包

格式化mac地址,生成魔法唤醒包,然后发送包,首先电脑需要打开wake on lan功能

创建main_wake_on_lan.py文件

import socket
import binascii
import struct
import re
''' 格式化mac地址,生成魔法唤醒包,然后发送。 mac格式: mac = A1B2C3D4E5F6 唤醒包格式: send_data = binascii.unhexlify('FF'*6 + str(mac)*16) '''
MAC = "18:31:BF:B0:36:8F"# MAC = "98-90-96-C1-FE-CB"# 格式化MAC地址989096C1FECB为这种形式
def format_mac0(mac):
if len(mac) == 12:
 pass
elif len(mac) == 17:
 if mac.count(':') == 5 or mac.count('-') == 5:
  sep = mac[2]
  mac = mac.replace(sep, '')
 else:
  raise ValueError('Incorrect MAC format')
else:
 raise ValueError('Incorrect MAC format')
return mac
def format_mac(mac):
mac_re = re.compile(r'''      (^([0-9A-F]{1,2}[-]){5}([0-9A-F]{1,2})$      |^([0-9A-F]{1,2}[:]){5}([0-9A-F]{1,2})$      |^([0-9A-F]{1,2}[.]){5}([0-9A-F]{1,2})$      )''', re.VERBOSE | re.IGNORECASE)
# print(re.match(mac_re, mac))if re.match(mac_re, mac):
 if mac.count(':') == 5 or mac.count('-') == 5 or mac.count('.'):
  sep = mac[2]
  mac_fm = mac.replace(sep, '')
  return mac_fm
else:
 raise ValueError('Incorrect MAC format')

# 方法一:将989096C1FECB格式的mac地址创建唤醒包
def create_magic_packet0(mac):
data = b'FF' * 6 + (mac * 16).encode()
print(data)

print(type(data))
send_data = b''for i in range(0, len(data), 2):
 send_data = send_data + struct.pack(b'B', int(data[i: i + 2], 16)) # int(data[i: i+2], 16) 把16进制转换成整数print(type(send_data))
return send_data
# 方法二:将989096C1FECB格式的mac地址创建唤醒包,使用binascii.unhexlify()方法
def create_magic_packet(mac):
data = 'FF' * 6 + str(mac) * 16
# print(data)# print(type(data))
send_data = binascii.unhexlify(data)
# print(type(send_data))return send_data
def send_magic_packet(send_data):
# broadcast_address = '192.168.255.255'
broadcast_address = '255.255.255.255'
port = 9
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)
s.sendto(send_data, (broadcast_address, port))
if __name__ == '__main__':
# print('mac地址:', format_mac(MAC))
mac = format_mac(MAC)
send_data = create_magic_packet(mac)
# print(send_data)
send_magic_packet(send_data)

调用发包函数

创建main_boot_computer.py

import main_wake_on_lan
import sys


def boot_computer():
try:
 pyname, parameter = sys.argv
 if parameter == '-h':
  print('参数使用方法:python3 main_boot_computer.py mac地址\npython3 main_boot_computer.py 98:90:96:C1:FE:CB')
 else:
  print('正在向 ', parameter, ' 发送魔法唤醒包!')
  # mac = '98:90:96:C1:FE:CB'

  mac = main_wake_on_lan.format_mac(parameter)
  send_data = main_wake_on_lan.create_magic_packet(mac)

  main_wake_on_lan.send_magic_packet(send_data)
  return '成功向' + parameter + '发送唤醒包!'
except ValueError:
 print('未收到传入的参数\n获取帮助:python3 main_boot_computer.py -h')

if __name__ == '__main__':
boot_computer()

使用方法

python3 main_boot_computer.py mac地址

补充:python通过wakeonlan唤醒内网电脑开机

首先需要pip3 install wakeonlan

然后在电脑需要你的网卡支持网络唤醒计算机。

然后在主板BIOS开启支持唤醒。

在系统网卡属性里选上“允许计算机关闭此设备以节约电源”,“允许此设备唤醒计算机”

然后以下就是python代码,非常简单。

from wakeonlan import send_magic_packet
send_magic_packet('4d.2d.6b.12.9b.1f')

文章来源网络,作者:运维,如若转载,请注明出处:https://shuyeidc.com/wp/222586.html<

(0)
运维的头像运维
上一篇2025-04-15 13:50
下一篇 2025-04-15 13:51

相关推荐

  • 个人主题怎么制作?

    制作个人主题是一个将个人风格、兴趣或专业领域转化为视觉化或结构化内容的过程,无论是用于个人博客、作品集、社交媒体账号还是品牌形象,核心都是围绕“个人特色”展开,以下从定位、内容规划、视觉设计、技术实现四个维度,详细拆解制作个人主题的完整流程,明确主题定位:找到个人特色的核心主题定位是所有工作的起点,需要先回答……

    2025-11-20
    0
  • 社群营销管理关键是什么?

    社群营销的核心在于通过建立有温度、有价值、有归属感的社群,实现用户留存、转化和品牌传播,其管理需贯穿“目标定位-内容运营-用户互动-数据驱动-风险控制”全流程,以下从五个维度展开详细说明:明确社群定位与目标社群管理的首要任务是精准定位,需明确社群的核心价值(如行业交流、产品使用指导、兴趣分享等)、目标用户画像……

    2025-11-20
    0
  • 香港公司网站备案需要什么材料?

    香港公司进行网站备案是一个涉及多部门协调、流程相对严谨的过程,尤其需兼顾中国内地与香港两地的监管要求,由于香港公司注册地与中国内地不同,其网站若主要服务内地用户或使用内地服务器,需根据服务器位置、网站内容性质等,选择对应的备案路径(如工信部ICP备案或公安备案),以下从备案主体资格、流程步骤、材料准备、注意事项……

    2025-11-20
    0
  • 如何企业上云推广

    企业上云已成为数字化转型的核心战略,但推广过程中需结合行业特性、企业痛点与市场需求,构建系统性、多维度的推广体系,以下从市场定位、策略设计、执行落地及效果优化四个维度,详细拆解企业上云推广的实践路径,精准定位:明确目标企业与核心价值企业上云并非“一刀切”的方案,需先锁定目标客户群体,提炼差异化价值主张,客户分层……

    2025-11-20
    0
  • PS设计搜索框的实用技巧有哪些?

    在PS中设计一个美观且功能性的搜索框需要结合创意构思、视觉设计和用户体验考量,以下从设计思路、制作步骤、细节优化及交互预览等方面详细说明,帮助打造符合需求的搜索框,设计前的规划明确使用场景:根据网站或APP的整体风格确定搜索框的调性,例如极简风适合细线条和纯色,科技感适合渐变和发光效果,电商类则可能需要突出搜索……

    2025-11-20
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注