WOL
Wol 指的是 Wake On Lan 技术。
安装
在路由器系统的软件包中搜索安装 wakeonlan 即可
使用方式:
$ wakeonlan -i [广播地址] [Mac 地址]假设我的路由器 IP 地址是 192.168.100.1,那么对应的广播地址就是 192.168.100.255
有趣的唤醒脚本
当回到家,手机连接到路由器 WIFI 后,会通过 WOL 技术,将家中的 windows 开机
确保路由器中安装了 tcpdump 和 wakeonlan,如果没有,去下载对应的系统软件即可,然后可以执行如下脚本(mac地址和广播地址切换为自己对应的)
phone_mac="8a:4f:5a:b0:68:80"
window_mac="c8:ff:bf:01:14:d1"
broadcast_address="192.168.100.255"
while true; do
# 监测 phone_mac 设备的连接状态
tcpdump -l -e -n arp | grep $phone_mac | while read -r line; do
echo "Device with MAC address $phone_mac is connected. Sending Wake-on-LAN signal to $window_mac..."
wakeonlan -i $broadcast_address $window_mac
break # 一旦检测到设备连接,执行相关操作并停止内部循环
done
done使用 procd 后台运行
procd 类似与 systemctl,我们可以直接在路由器上使用它来托管我们的服务:
创建脚本文件,将其放在 /usr/bin 目录下
$ vim /usr/bin/wol_monitor.sh && chmod +x /usr/bin/wol_monitor.sh将你的脚本内容复制进去,并添加脚本头:
#!/bin/sh
phone_mac="8a:4f:5a:b0:68:80"
window_mac="c8:ff:bf:01:14:d1"
broadcast_address="192.168.100.255"
while true; do
tcpdump -l -e -n arp | grep $phone_mac | while read -r line; do
echo "Device with MAC address $phone_mac is connected. Sending Wake-on-LAN signal to $window_mac..."
wakeonlan -i $broadcast_address $window_mac
break
done
done创建启动服务脚本
$ vim /etc/init.d/wol_monitor && chmod +x /etc/init.d/wol_monitor写入内容:
#!/bin/sh /etc/rc.common
START=99
USE_PROCD=1
start_service() {
procd_open_instance
procd_set_param command /usr/bin/wol_monitor.sh
procd_set_param respawn
procd_set_param stdout 1
procd_set_param stderr 1
procd_close_instance
}启用管理服务:
$ /etc/init.d/wol_monitor enable # 设置开机自启
$ /etc/init.d/wol_monitor start # 立即启动服务
$ /etc/init.d/wol_monitor stop # 停止服务
$ /etc/init.d/wol_monitor restart # 重启服务
$ /etc/init.d/wol_monitor status # 查看服务状态