Decidí que quería una solución para activar mi servidor de medios automáticamente cuando se accedía que no dependía de dd-wrt.
Tengo un raspberry pi, así que lo usé porque es de baja potencia y no me importa mantenerlo encendido todo el tiempo, por supuesto, podría ejecutarse desde cualquier máquina Linux.
La solución final que encontré para mí fue escribir un pequeño script bash. Las dependencias raspberry-pi son etherwake y tcpdump. Ambos no están instalados por defecto en rasbian. También en el servidor, Wake On Lan debe habilitarse como se menciona en las otras publicaciones.
sudo apt-get install etherwake
sudo apt-get install tcpdump
El script de estela es el siguiente:
nano ~/wol.sh
Entonces:
#!/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
La idea principal es que se ejecuta desde mi raspberry-pi que activará el servidor si nota una sola solicitud de arp para el servidor. Si el servidor está despierto, entonces no estará escuchando una solicitud arp, sino que enviará algunos pings de vez en cuando para asegurarse de que todavía esté despierto.
Llamé al archivo wol.sh y lo hice ejecutable. Luego póngalo en el sudo crontab para iniciar @reboot como root. Esto es para tcpdump que necesita acceso elevado para escuchar eth0 y etherwake.
sudo chmod +x /home/pi/wol.sh
sudo crontab -e
agrega esto al final
@reboot sh /home/pi/wol.sh > /dev/null