Я решил, что мне нужно решение для автоматического пробуждения медиа-сервера при обращении, которое не зависит от dd-wrt.
У меня есть Raspberry Pi, поэтому я использовал его, потому что он маломощный, и я не против держать его включенным постоянно, конечно, его можно запустить с любой машины Linux.
Окончательным решением, которое я нашел для себя, было написание небольшого сценария bash. Зависимости raspberry-pi - это etherwake и tcpdump. Оба не установлены по умолчанию на rasbian. Также на сервере должен быть включен Wake On Lan, как упоминалось в других постах.
sudo apt-get install etherwake
sudo apt-get install tcpdump
Скрипт Wake выглядит следующим образом:
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
Основная идея заключается в том, что он запускается с моего raspberry-pi, который разбудит сервер, если он заметит один запрос arp для сервера. Если сервер активен, он не будет прослушивать запрос arp, а время от времени отправляет несколько пингов, чтобы убедиться, что он все еще активен.
Я назвал файл wol.sh и сделал его исполняемым. Затем поместите его в crontab sudo для запуска @reboot от имени пользователя root. Это для tcpdump, которому необходим повышенный доступ для прослушивания eth0 и etherwake.
sudo chmod +x /home/pi/wol.sh
sudo crontab -e
добавить это в нижней части
@reboot sh /home/pi/wol.sh > /dev/null