Decidi que queria uma solução para ativar meu servidor de mídia automaticamente quando acessado e que não dependesse do dd-wrt.
Eu tenho um raspberry pi, então usei porque é de baixa potência e não me importo em mantê-lo ligado o tempo todo, é claro que pode ser executado em qualquer máquina Linux.
A solução final que encontrei foi escrever um pequeno script bash. As dependências 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 como mencionado nas outras postagens.
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 seja executado no meu raspberry-pi, o que ativará o servidor se detectar uma única solicitação arp para o servidor. Se o servidor estiver ativado, ele não atenderá a uma solicitação arp, mas enviará alguns pings de vez em quando para garantir que ele ainda esteja ativo.
Chamei o arquivo de 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 fundo
@reboot sh /home/pi/wol.sh > /dev/null