樹莓派實現遠程開機局域網電腦(WOL協議+華碩主板)
一、環境準備
確保設備同一局域網中
樹莓派:192.168.31.81 (操作機器)
window 10 Desktop: 192.168.31.201 (被喚醒對象,需要使用改網卡地址,最好路由綁定IP,方便使用)
二、系統設置網卡可以喚醒
image.png
其實這里的【允許計算機關閉此設備以節約電源】根據實際情況勾選,經過測試我的主板必須要選擇,否則關機后網卡不是常亮狀態導致一直無法喚醒。
image
三、配置BIOS
進入BIOS
四、用PuTTY登錄樹莓派
- 方式一:使用etherwake 命令喚醒
1.下載etherwake
sudo apt-get install etherwake
2.使用命令喚醒:
sudo etherwake 9c:5c:8e:d1:52:d1
image.png
注意:上面為MAC地址
- 方式二:使用直接使用腳本喚醒
1.創建如下腳本(記得修改為自己的IP的mac 地址)
vim ./start_wol_win10.sh
#!/usr/bin/env python3
# coding:utf-8
import socket
import binascii
import re
#定義一個函數,默認MAC地址為欲喚醒電腦的MAC地址(WIN系統可通過ipconfig獲取)
def wakeup(mac='F4-4D-30-73-87-E7',ip='192.168.2.255'):
#利用正則判斷MAC地址是否合法
if re.match(r"([0-9a-fA-F]{2}(-|:){0,1}){5}([a-fA-F0-9]{2})",mac) and (len(mac) == 12 or len(mac) == 17):
#去掉MAC地址里的:和-
mac = mac.replace('-','').replace(':','').upper()
#IP地址可以是具體某個IP或者是一個廣播地址,端口一般為9
IP,port=ip,9
s=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
s.setsockopt(socket.SOL_SOCKET,socket.SO_BROADCAST,1)
#轉換編碼,喚醒數據包為FFFFFFFFFFFF+MAC地址重復16次+密碼
send_data=binascii.unhexlify('FF' * 6 + mac.upper() * 20)
s.sendto(send_data,(IP,port))
s.close()
print("向"+mac+"發送喚醒包成功!")
else:
print("MAC address ERROR")
wakeup(mac='9C-5C-8E-D1-52-D1',ip='192.168.31.201')
2.執行命令喚醒:
sudo chmod +x start_wol_win10.sh
sudo ./start_wol_win10.sh
image.png