Was wollte ich erreichen.
1.) Der MusicPal hängt hinter einer Funktsteckdose, nach anschalten des Stromkreises sollte der MusicPal in den Standby gehen.
2.) Wenn der MusicPal aus dem Standby aktiviert wird soll die Buffalo Linkstation Live als MediaServer gestartet werden.
3.) Die Linkstation Live soll neben dem NAS-Navigator auch den MusicPal berücksichtigen und solange der MusicPal an ist auch an bleiben. Erst wenn alle Rechner heruntergefahren sind und der MusicPal im Standby ist oder der Stromkreis des MusicPal aus ist soll sich die Linkstation schlafen legen.
4.) Der MusicPal soll WLAN im Standby immer deaktivieren und beim aktivieren (aus dem Standby aktivieren) das WLAN nur dann aktivieren wenn kein LAN zur Verfügung steht.
Auf dem MusicPal:
Um Dateien in / schreiben zu können muss das Filesystem neu gemountet werden!
mount -o remount,rw /
Danach wieder Read-Only mounten werden!
mount -o remount,ro /
alternativ: /home/make_rw.sh
/etc/rc.d/init.d/poweron_to_standby:
a.) Das Script anlegen (touch /etc/rc.d/init.d/poweron_to_standby)
b.) chmod 755 auf das Script (Berechtigungen richtig)
c.) cd /etc/rc3.d/
d.) ln -s ../init.d/poweron_to_standby /etc/rc3.d/S99poweron_to_standby
(a. Der MusicPal geht nach dem Boot direkt in den Standby)
(b. Die 20sec werden für das WLAN benötigt damit die Zeitsynchronisation funktioniert und die WLAN Verbindung später stabil bleibt, bevor das WLAN durch das nashville_notify Script deaktiviert wird)
In die Datei /etc/rc.d/init.d/poweron_to_standby folgendes einfügen:
#! /bin/sh
case "$1" in
start)
/bin/ipc_send show_msg_box "Starte: 20sec§verbleibend§#5"
sleep 5
/bin/ipc_send show_msg_box "Starte: 15sec§verbleibend§#5"
sleep 5
/bin/ipc_send show_msg_box "Starte: 10sec§verbleibend§#5"
sleep 5
/bin/ipc_send show_msg_box "Starte: 5sec§verbleibend§#5"
sleep 5
ipc_send power_down
;;
*)
echo "Usage: $0 {start}"
exit 1
esac
exit 0
/etc/rc.d/init.d/poweron_to_standby_BOOTDONE:
a.) Das Script anlegen (touch /etc/rc.d/init.d/poweron_to_standby_BOOTDONE)
b.) chmod 755 auf das Script (Berechtigungen richtig)
c.) cd /etc/rc3.d/
d.) ln -s ../init.d/poweron_to_standby_BOOTDONE /etc/rc3.d/S03poweron_to_standby_BOOTDONE
(Die angelegt Datei wird direkt beim booten gleöscht um sie im späteren Bootvorgang wieder anzulegen. Dadurch wird gewährleistet das die WOL Befehle im nashville_notify nicht beim initialen starten ausgeführt werden)
In die Datei /etc/rc.d/init.d/poweron_to_standby_BOOTDONE folgendes einfügen:
#! /bin/sh
if [ -f /tmp/BOOTDONE ]; then
rm /tmp/BOOTDONE
fi
/bin/nashville_notify.sh:
(a. WLAN wird im Standby deaktiviert)
(b. WLAN wird im aktiven Modus nur aktiviert wenn keine LAN-Verbindung besteht)
(c. Aufwecken der Linkstation Live (properitäres magic-packet format der linkstation))
In die Datei /bin/nashville_notify.sh folgendes einfügen:
#!/bin/sh
#logger $1 $2 $3
# Linkstation - Primary
WOL_DYN_1="<EUER-DYNDNS-NAME>.dyndns.org:9"
WOL_MAC_1="<MAC>%3A<MAC>%3A<MAC>%3A<MAC>%3A<MAC>%3A<MAC>"
if [ $1 = event -a $2 = power_down ]; then
# Netzwerk deaktivieren
/etc/init.d/wlan stop
fi
# Wenn MusicPal aufwacht, MagicPacket an Server schicken
if ([ $1 = event -a $2 = power_up ] && [ -f /tmp/BOOTDONE ]); then
# Netzwerk aktivieren
if ! ifconfig | grep eth0 && ! ifconfig | grep wlan0; then /etc/init.d/wlan start; fi
ping -c 1 $serverip > /dev/null
let ret=$?
if [ $ret -ne 0 ]; then
# Linkstation aufwecken
wget -O - "http://www.wakeonlan.me/?mobile=0&ip=$WOL_DYN_1&mac=$WOL_MAC_1&schedule=&timezone=2"
fi
fi
if [ ! -f /tmp/BOOTDONE ]; then
touch /tmp/BOOTDONE
fi
Auf der Linkstation:
/etc/cron.d/chkip.sh
Anlegen der Datei /etc/cron.d/chkip.sh (touch) und die richtigen Berechtigungen vergeben. (chmod)
Folgendes in die Datei /etc/cron.d/chkip.sh einfügen:
#! /bin/sh
# Linkstation
MACADR=`ifconfig $(ifconfig | grep eth | cut -d " " -f1;) | grep HWaddr | cut -d " " -f11`
IPADR=`ifconfig $(ifconfig | grep eth | cut -d " " -f1;) | grep "inet addr:" | cut -d " " -f12 | cut -d ":" -f2`
# Musicpal - LAN
CHKIP1=<XXX>.<XXX>.<XXX>.<XXX>
MUSICPALUSER1="<MUSICPAL-USERNAME>"
MUSICPALPASSWORD1="<MUSICPAL-PASSWORD>"
# Musicpal - WLAN
CHKIP2=<XXX>.<XXX>.<XXX>.<XXX>
MUSICPALUSER2="<MUSICPAL-USERNAME>"
MUSICPALPASSWORD2="<MUSICPAL-PASSWORD>"
dowol () {
/usr/local/sbin/naswol -m $MACADR -i $IPADR -A
}
WOLDONE=0
if [ $WOLDONE -eq 0 ]; then
POWERSTATE=0
POWERSTATE=`wget -O - "http://$MUSICPALUSER1:$MUSICPALPASSWORD1@$CHKIP1/admin/cgi-bin/state.cgi" | grep "power_state" | sed -e "s/<power_state>//g" | sed -e "s/<\/power_state>//g" | sed -e "s/ //g" | tr -d "\r\n"`
if [ $POWERSTATE -eq 1 ]; then
echo "MusicPal LAN is alive..."
dowol
WOLDONE=1
exit;
fi
fi
if [ $WOLDONE -eq 0 ]; then
POWERSTATE=0
POWERSTATE=`wget -O - "http://$MUSICPALUSER2:$MUSICPALPASSWORD2@$CHKIP2/admin/cgi-bin/state.cgi" | grep "power_state" | sed -e "s/<power_state>//g" | sed -e "s/<\/power_state>//g" | sed -e "s/ //g" | tr -d "\r\n"`
if [ $POWERSTATE -eq 1 ]; then
echo "MusicPal WLAN is alive..."
dowol
WOLDONE=1
exit;
fi
fi
In die Crontab folgendes zusätzlich einfügen:
*/1 * * * * /etc/cron/cron.d/chkip.sh
Alles was zwischen <> steht muss entsprechend angepasst werden. Ausserdem benötigt ihr einen dyndns-account oder einen anderen für das WOL der Linkstation, sowie euer router muss udp port 9 auf die linkstation für das wol durchlassen (port ist anpassbar).
Ich übernehme keinerlei Haftung für die Richtigkeit, Vollständigkeit usw. Wer etwas aus diesen Zeilen übernimmt tut dieses auf eigene Gefahr.
Viel Spaß!