wie bereits im Forum (viewtopic.php?f=37&t=11020) diskutiert wurde. Gibt es einige Nutzer die gerne ein Script um ihren WHS zu wecken wenn sie ein Gerät einschalten das keine Magic Pakete versenden kann. Ich hab mich nun mal rangesetzt und eine kleines Shellscript geschrieben, das auch bisher sehr gut funktioniert.
Voraussetzungen:
- - Router mit DD-WRT Firmware (getestet mit v24-14896 NEWD-2 K2.6 big) oder einen Linux Server
- Aktiviertes JFFS
HowTo:
Auf eurem DD-WRT Router muss das Journalling Flash File System aktiviert sein (am betsen mit einem USB Stick, sollte jedoch auch über den NVRAM funktionieren). Das wars im großen und ganzen auch schon jetzt einfach mein Script auf eure Bedürfnisse anpassen, dann z.B. mittels WinSCP unter
Code: Alles auswählen
/jffs/etc/config/scriptname.startup
Code: Alles auswählen
chmod +x /jffs/etc/config/scriptname.startup
Script:
Code: Alles auswählen
#!/bin/sh
streamclient_ip="xxx.xxx.xxx.xxx"
server_ip="xxx.xxx.xxx.xxx"
server_mac="xx:xx:xx:xx:xx:xx"
logfile="/jffs/log/wdtv.log"
lockdir="/tmp/var/wdtvlock"
chmod +w $logfile
#Prüfe anhand des LockDir ob das Script bereits ausgeführt wird
if mkdir $lockdir; then
#Logfile löschen / zurücksetzen
echo "["`date`"] -- START -- Script gestartet" > $logfile
echo "["`date`"] -- CHECK -- Lockcheck erfolgreich" >> $logfile
while :
do
if ping -c1 $streamclient_ip > /dev/null 2>&1 && ping -c1 $server_ip > /dev/null 2>&1; then
echo "["`date`"] -- SLEEP -- CLIENT $streamclient_ip und WHS $server_ip sind in Betrieb" >> $logfile
sleep 1800
else
#Pinganfrage ob Streamingclient online
if ping -c1 $streamclient_ip > /dev/null 2>&1; then
echo "["`date`"] -- PING -- CLIENT $streamclient_ip ist online - Prüfe WHS Status" >> $logfile
#Pinganfrage ob Server online
if ! ping -c1 $server_ip > /dev/null 2>&1; then
# Wake-up Home Server
/usr/sbin/wol -i 192.168.22.255 $server_mac
echo "["`date`"] -- WOL -- WHS $server_ip wurde geweckt" >> $logfile
sleep 300
fi
else
echo "["`date`"] -- SCAN -- CLIENT $streamclient_ip ist offline" >> $logfile
fi
sleep 15
fi
done
#Wenn Script bereits ausgeführt wird > EXIT
else
echo "["`date`"] -- ERROR -- Lockcheck fehlgeschlagen - Script bereits aktiv" >> $logfile
echo "["`date`"] -- EXIT --" >> $logfile
exit 1
fi
Code: Alles auswählen
/jffs/log/wdtv.log