Ben dd-wrt bağımlı olmayan eriştiğinde medya sunucumu otomatik olarak uyandırmak için bir çözüm istediğime karar verdim.
Bir ahududu pi var, bu yüzden kullandım çünkü düşük güç ve her zaman tutmak sakıncası yok, tabii ki herhangi bir linux makineden çalıştırılabilir.
Kendim için bulduğum son çözüm küçük bir bash senaryosu yazmaktı. Ahududu-pi bağımlılıkları eterwake ve tcpdump'tır. Her ikisi de varsayılan olarak rasbian'a yüklenmez. Ayrıca sunucuda Wake On Lan diğer yayınlarda belirtildiği gibi etkinleştirilmelidir.
sudo apt-get install etherwake
sudo apt-get install tcpdump
Uyanık komut dosyası aşağıdaki gibidir:
nano ~/wol.sh
Sonra:
#!/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
Birincil fikir, sunucu için tek bir arp isteği fark ederse sunucuyu uyandıracak olan ahududu-pi'den çalıştırılmasıdır. Sunucu uyanık ise o zaman bir arp isteği dinlemeyecek ama her zaman ve sonra hala uyanık olduğundan emin olmak için birkaç ping gönderin.
Wol.sh dosyasını adlandırdım ve çalıştırılabilir yaptım. Sonra kök olarak @reboot başlatmak için sudo crontab içine koyun. Bu, eth0 ve etherwake'i dinlemek için yüksek erişim gerektiren tcpdump içindir.
sudo chmod +x /home/pi/wol.sh
sudo crontab -e
bunu en alta ekle
@reboot sh /home/pi/wol.sh > /dev/null