Eu decidi que queria uma solução para ativar o meu servidor de mídia automaticamente quando acessado, o que não dependia do dd-wrt.
Eu tenho um pi de framboesa, então eu usei porque é de baixa potência e não me importo de mantê-lo ligado o tempo todo, é claro que ele pode ser executado em qualquer máquina linux.
A solução final que encontrei para mim foi escrever um pequeno script bash. As dependências do raspberry-pi são etherwake e tcpdump. Ambos não são instalados por padrão no rasbian. Também no servidor, o Wake On Lan precisa ser ativado conforme mencionado nos outros posts.
sudo apt-get install etherwake
sudo apt-get install tcpdump
O script de ativação é o seguinte:
nano ~/wol.sh
Então:
#!/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
A idéia principal é que ele é executado a partir do meu pi-framboesa, que irá acordar o servidor se notar uma única solicitação arp para o servidor. Se o servidor estiver acordado, ele não estará ouvindo uma solicitação de arp, mas enviará alguns pings de vez em quando para ter certeza de que ainda está ativo.
Eu nomeei o arquivo wol.sh e o tornei executável. Em seguida, coloque-o no sudo crontab para iniciar o @reboot como root. Isso é para o tcpdump que precisa de acesso elevado para ouvir eth0 e etherwake.
sudo chmod +x /home/pi/wol.sh
sudo crontab -e
adicione isso ao final
@reboot sh /home/pi/wol.sh > /dev/null