Я вирішив, що хочу рішення, щоб автоматично пробудити свій медіа-сервер, коли доступ до нього не залежав від dd-wrt.
У мене є малиновий пі, тому я використовував його, оскільки це мала потужність, і я не проти тримати його постійно, звичайно, його можна запустити з будь-якої машини Linux.
Остаточне рішення, яке я знайшов для себе, - написання невеликого сценарію. Залежності малинового пі є ефірним пробудженням і tcpdump. Обидва не встановлені за замовчуванням на rasbian. Також на сервері Wake On Lan потрібно включити, як було зазначено в інших публікаціях.
sudo apt-get install etherwake
sudo apt-get install tcpdump
Сценарій пробудження такий:
nano ~/wol.sh
Тоді:
#!/bin/bash
pingInterval=60 #time interval, in seconds, between checks that the server is still awake.
target=192.168.x.x #WOL target ip address
targetMAC=00:11:22:33:44:55 #WOL target MAC
wake () {
tcpdump -i eth0 -c 1 -p host $target
etherwake $targetMAC
#echo WOL sent to $target at $targetMAC
return
}
while sleep $pingInterval; do
varPing=`ping -s 1 -c 2 $target > /dev/null; echo $?`
if [ $varPing -eq 0 ]; then
#echo ping success
else
#echo ping fail
wake
fi
done
Основна ідея полягає в тому, що він запускається з мого малинового пі, що розбудить сервер, якщо він помітить один запит arp для сервера. Якщо сервер прокинувся, він не буде прослуховувати запит arp, але надсилати раз у раз пінг, щоб переконатися, що він ще не працює.
Я назвав файл wol.sh і зробив його виконуваним. Потім покладіть його в crontab sudo, щоб запустити @reboot як root. Це для tcpdump, якому потрібен підвищений доступ для прослуховування eth0 та ефірного пробудження.
sudo chmod +x /home/pi/wol.sh
sudo crontab -e
додайте це донизу
@reboot sh /home/pi/wol.sh > /dev/null