大神教你用Python實現Wake On Lan遠端開機功能
這篇文章主要介紹了使用Python實現Wake On Lan遠端開機功能,文中給大家補充介紹了python透過wakeonlan喚醒內網電腦開機,非常不錯,感興趣的朋友跟隨小編一起學習吧 |
Wake-On-LAN簡稱WOL,是一種電源管理功能;如果存在網路活動,則允許裝置將作業系統從待機或休眠模式中喚醒。許多主機板廠商支援IBM提出的網路喚醒標準。該標準允許網路管理員遠端開啟PC機電源,以便進行檔案升級、資源跟蹤和裝置清點等工作。
先看下使用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')
總結
以上所述是小編給大家介紹的使用Python實現Wake On Lan遠端開機功能,希望對大家有所幫助!
原文地址:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31559985/viewspace-2679292/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 關於wake on lan遠端喚醒主機的問題,長時間關機無法遠端喚醒
- C# 實現Ping遠端主機功能C#
- FRP+WoL實現遠端開機+遠端桌面FRP
- Python實現遠端埠監控例項Python
- Linux 實現本、異地遠端資料實時同步功能Linux
- window遠端開機
- 記一次實現遠端控制電腦開機過程
- Go實現ssh執行遠端命令及遠端終端Go
- 10分鐘教你用Python實現微信翻譯機器人Python機器人
- 工控機遠端策略配置及功能啟用
- 《遠端控制》-服務端實現(一)服務端
- ubuntu如何實現遠端操控Ubuntu
- 開啟mysql遠端登入訪問功能MySql
- 快速實現無人車遠端控制開發——實踐類
- 手把手教你實現Android真機遠端截圖Android
- TeamViewer遠端連線工具實現遠端辦公高效工作View
- 教你用Python實現全自動刷網課Python
- NAS如何實現遠端訪問
- Pycharm連線遠端伺服器並實現遠端除錯PyCharm伺服器除錯
- 如何實現UPS電源開關機狀態遠端監測和異常告警?
- vnc遠端用外網遠端公司內網,3步實現vnc遠端用外網遠端公司內網VNC內網
- web端 網頁端分享功能的實現Web網頁
- 精密加工數控機床如何實現遠端監控和遠端上下載程式
- Storm系列(五)DRPC實現遠端呼叫ORMRPC
- 徒手擼框架--實現 RPC 遠端呼叫框架RPC
- 如何實現遠端桌面連線操作
- 洗碗機廠家如何實現遠端監控與資料分析
- rabbitmq 新增遠端訪問功能MQ
- vue實現錄音功能(pc端)Vue
- jQuery實現客戶端CheckAll功能jQuery客戶端
- wake up
- 遠端影片監控實現的條件
- Java使用HttpClient實現遠端服務呼叫JavaHTTPclient
- 如何遠端投屏實現螢幕共享
- 01 . Go語言實現SSH遠端終端及WebSocketGoWeb
- 支援數位板的遠端軟體,實現遠端使用 Wacom 數位板
- Flask後端開發(二) - 功能實現和專案總結Flask後端
- 實戰|教你用Python玩轉MysqlPythonMySql