大神教你用Python实现局域网唤醒远程开机功能

  <强>这篇文章主要介绍了使用Python实现局域网唤醒远程开机功能,文中给大家补充介绍了Python通过wakeonlan唤醒内网电脑开机,非常不错,感兴趣的朋友跟随小编一起学习吧   

局域网唤醒简称WOL,是一种电源管理功能,如果存在网络活动,则允许设备将操作系统从待机或休眠模式中唤醒。许多主板厂商支持IBM提出的网络唤醒标准。该标准允许网络管理员远程打开PC机电源,以便进行文件升级,资源跟踪和设备清点等工作。

  

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

        

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

  

创建main_wake_on_lan.py文件

  <>以前import 插座   import  binascii   import 结构   import 再保险   & # 39;& # 39;& # 39;   格式化mac地址,生成魔法唤醒包,然后发送。   mac格式:mac =A1B2C3D4E5F6   唤醒包格式:send_data =, binascii.unhexlify (& # 39; ff # 39; * 6, +, str (mac) * 16)   & # 39;& # 39;& # 39;   时间=MAC “18:31:男朋友:B0:36:8F"   ,=#,MAC “98 - 90 - 96 - c1 - fe - cb"   ,   #,格式化MAC地址989096 c1fecb为这种形式   def  format_mac0 (mac):   ,if  len (mac),==, 12:   ,通过   ,elif  len (mac),==, 17:   if 才能;mac.count(& # 39;: & # 39;),==, 5,趁机mac.count (& # 39; & # 39;),==, 5:   ,,sep =, mac [2]   ,,mac =, mac.replace(9月,& # 39;& # 39;)   其他的才能:   ,,raise  ValueError (& # 39; Incorrect  MAC 格式# 39;)   ,其他的:   raise 才能;ValueError (& # 39; Incorrect  MAC 格式# 39;)   return  mac   def  format_mac (mac):=,,mac_re  re.compile (" # 39; & # 39; & # 39;   ,,,,,(^ ([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})美元   ,,,,,)& # 39;& # 39;& # 39;,re.VERBOSE  |, re.IGNORECASE)   ,# print (re.match (mac_re,, mac))   ,if  re.match (mac_re,, mac):   if 才能;mac.count(& # 39;: & # 39;),==, 5,趁机mac.count(& # 39; & # 39;),==, 5,趁机mac.count(& # 39; # 39;公司):   ,,sep =, mac [2]   ,,mac_fm =, mac.replace(9月,& # 39;& # 39;)   ,,return  mac_fm   ,其他的:   raise 才能;ValueError (& # 39; Incorrect  MAC 格式# 39;)   ,   #,方法一:将989096 c1fecb格式的mac地址创建唤醒包   def  create_magic_packet0 (mac):=,data  b # 39; ff # 39;, *, 6, +, (mac  *, 16) .encode ()   ,打印(数据)   ,   (数据),打印(类型)=,send_data  b # 39; & # 39;   ,for 小姐:拷贝范围(0,,len(数据),2):   send_data 才能=,send_data  +, struct.pack (b, b,,, int(数据(我:小姐:+,2],,16)),#,int(数据(我,+ 2),16),把16进制转换成整数   (send_data),打印(类型)   return  send_data   #,方法二:将989096 c1fecb格式的mac地址创建唤醒包,使用binascii.unhexlify()方法   def  create_magic_packet (mac):=,data  & # 39; ff # 39;, *, 6, +, str (mac), *, 16岁   ,#打印(数据)   ,# print(类型(数据))=,,send_data  binascii.unhexlify(数据)   ,# print(类型(send_data))   return  send_data   def  send_magic_packet (send_data):=#大敌;broadcast_address  & # 39; 192.168.255.255 # 39;=,broadcast_address  & # 39; 255.255.255.255& # 39;   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,端口))   if  __name__ ==, & # 39; __main__ # 39;:   ,#打印(& # 39;mac地址:& # 39;,,format_mac (mac))=,,mac  format_mac (MAC)=,,send_data  create_magic_packet (mac)   ,#打印(send_data)   之前,send_magic_packet (send_data)   

调用发包函数

  

创建main_boot_computer.py   <>以前import  main_wake_on_lan   import 系统   ,   ,   def  boot_computer ():   ,试一试:   ,,pyname, parameter =sys.argv   if 才能;parameter ==, & # 39; - h # 39;:   ,才能打印(& # 39;参数使用方法:python3  main_boot_computer.py  mac地址\ npython3  main_boot_computer.py  98:90:96: C1: FE: cb # 39;)   其他的才能:   ,才能打印(& # 39;正在向,& # 39;,,参数,,& # 39;,发送魔法唤醒包! & # 39;)   ,,#,mac =, & # 39; 98:90:96: C1: FE: cb # 39;   ,   ,,mac =, main_wake_on_lan.format_mac(参数)   ,,send_data =, main_wake_on_lan.create_magic_packet (mac)   ,   ,,main_wake_on_lan.send_magic_packet (send_data)   ,,return  & # 39;成功向& # 39;,+,parameter  +, & # 39;发送唤醒包! & # 39;   ,except  ValueError:   打印才能(& # 39;未收到传入的参数\ n获取帮助:python3  main_boot_computer.py  - h # 39;)   ,   if  __name__ ==, & # 39; __main__ # 39;:   之前,boot_computer ()

大神教你用Python实现局域网唤醒远程开机功能