Script ausführen beim starten und beenden der DS

Aus Joachim Schuster Wiki
Version vom 7. Juni 2010, 13:27 Uhr von Joachim (Diskussion | Beiträge)

(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Wechseln zu: Navigation, Suche

Möchte man einen Script beim Starten oder Beenden der DiskStation ausführen, so muss es ins folgende Verzeichnis erstellt werden:

/usr/syno/etc.defaults/rc.d/

Der Mechanismus dahinter ist bei jedem Linux-System gleich:

Die darin enthaltenen Skripte werden mit Nummern von 01-99 und mit dem Präfix S versehen. Das System führt diese Skripte dann in der entsprechenden Reihenfolge aus. Um nun beispielsweise beim beenden des Startvorgangs eine Nachricht zu senden, muss das entsprechende Skript eine möglichst hohe Nummer, also S99 erhalten, gefolgt von einem frei wählbaren Namen + .sh.

S99xyz.sh

Dieses Skript muss ausführbar gemacht werden:

chmod 755 S99xyz.sh

Ein Skript muss dann folgenden Aufbau haben:

#!/bin/sh
STATUS='invalid'
case "$1" in
       start)
       STATUS='starting up'
       ;;
       stop)
       STATUS='shutting down'
       ;;
       esac
/bin/echo $STATUS

Achtung!!: Der Pfad zu einem Programm/Skript, das darin aufgerufen werden soll, muss komplett angegeben werden. Als root angemeldet sind einige Pfade schon über PATH geladen, sodass man ohne weiteres echo direkt eingeben kann. In den Startskripten existiert diese Umgebungsvariable nicht, somit ist der Pfad nicht bekannt und muss komplett angegeben werden.

Möchte man nun beispielsweise den Status per boxcar als Push-Benachrichtigung auf das iPhone erhalten, so kann man statt /bin/echo folgenden Befehl eingeben:

/opt/bin/curl -d "token=hLG9qymP8d4SK7qhTNoT" \
-d "&secret=9k2lcHom55WwMa7qQzoErftR7fBGpLyLuvrp1LtG" \
-d "&notification[from_screen_name]=Server" \
-d "&notification[message]=$STATUS" \
http://boxcar.io/devices/providers/fKJ9a8x9Q8QXSwzADwhy/notifications

Dies ist dem Beispiel auf der API Dokumentationssteite von boxcar entnommen - die exakten Anpassungen an die persönlichen Einstellungen kann man dort nachlesen.

Curl muss man auf der DiskStation erst noch installieren mit:

ipkg install libcurl