Packages:userscript
Aus NAS-4220
Inhaltsverzeichnis |
Sinn des Paketes
Beim Start des NAS wird das System aus dem Flashspeicher zurückgeschrieben, d.h. fast alle Änderungen am System/Dienst-Einstellungen gehen verloren. Um nicht bei jedem Systemstart alle Änderungen erneut vornehmen zu müssen, habe ich dieses kleine Paket entwickelt. Gleichzeitig soll es Nutzern ohne Unix/Linux/BSD-Erfahrung (speziell Shell/Skript-Erfahrung) - also speziell Windows-Heimanwendern - ermöglichen, eigene Änderungen problemlos dauerhaft vorzunehmen.
Um das Rad nicht jedesmal neu erfinden zu müssen wäre es sicher für alle hilfreich, wenn eigene (erfolgreich getesteten) Skripte hier vorstellt werden.
Inhalt
init - wird beim Starten des NAS ausgeführt, sorgt dafür dass ...
init.us - ... nach Beendigung des "normalen" Starts ausgeführt wird (nachdem also schon alle RS-Dienste laufen! - so können diese unsere Einstellungen nicht überschreiben)
example/* - Beispielskripte zum ersten Testen (s. unten - mit "Bsp.-Skript" in der Überschrift gekennzeichnet)
scripts/ - hier müssen die zu startenden Skripte rein. Reine Textfiles reichen aus (wird autom. ausführbar gemacht) aber unix-konforme Bash-Skripte (also mit "#!/bin/sh" am Anfang!!!) mit der Endung ".sh" müssen's sein!!! alles andere wird nicht ausgeführt!
config/ - von mir gedacht, um fertige config-Dateien zu lagern, welche die Standards überschreiben (siehe proftpd-Bsp)
Skripte
link-Skripte (Bsp.-Skript)
linkhddapp.sh / linkroot.sh - Symlinks von /usr/hddapp/ bzw. / werden unter userscript/hddapp/ bzw. userscript/root/ erstellt - war nützlich zum erstellen von userscript. Falls jemals Fragen aufkommen - /usr/hddapp/ ist identisch mit /system/hddapp/
Unter hddapp/etc liegen die wesentlichen Konfigurationsdateien für die NAS-seitigen Serverdienste (samba, proftpd, lpd (Drucker), mt-daad (bonjour/itunes)). Wenn Konfigurationsänderungen an diesen Diensten vorgenommen werden sollen, dann kann hier die aktuelle config-Datei als Grundlage dienen.
Für andere Änderungen (z.B. /etc/exports) ist dann der /-Link sinnvoll.
unlinkhddapp.sh / unlinkroot.sh - tja, was wohl? Entfernt die Links wieder ;)
proftpd (Bsp.-Skript mit Erklärung)
proftpd.sh - überschreibt die Einstellungen des FTP-Servers mit der proftpd.conf aus userscript/config/proftpd.conf und startet den Server (proftpd) neu.
Benötigt eine der conf-Dateien aus userscript/example/config/ in userscript/config/ - ACHTUNG. Je nach eurem Systemlaufwerk (ide1/ide2/md1) die entsprechende conf nehmen und in proftp.conf umbennenen.
$PATH setzen (Bsp.-Skript)
path.sh - setzt die PATH-Umgebungsvariable für den Nutzer root. userscript/example/config/path muss noch nach userscript/config/ kopiert und ggf. angepasst werden. Weitere Pfade jeweils mit einem : voneinander trennen.
Damit können ggf. neue binaries (siehe Forum) ohne Pfadangabe ausgeführt werden. In der beigelegten path ist userscript/bin/ als Pfad vorgegeben.
Crontab erweitern
Cron für eigene Sachen erweitern.
Erforderlich:
- eine gültige cron-Anweisung (Crontab-Beispiel) im verzeichnis /config/cron.
Sinnvollerweise lässt man Skripte ausführen, da crontab schlicht zu unübersichtlich wird, wenn zuviele Befehle in einer Zeile stehen. Das Bsp. hier ist entsprechend sinnlos:
10 3 * * * root touch /tmp/test.tmp 10 20 * * * root rm /tmp/test.tmp
- folgendes Skript unter scripts/cron.sh speichern:
#!/bin/sh # # edit crontab # # requires a cron-style command-file named "cron" in /userscript/config/ USD=/usr/userscript if [ -e $USD/config/cron ]; then crontab -l > /tmp/crontab.tmp cat $USD/config/cron >> /tmp/crontab.tmp crontab /tmp/crontab.tmp rm -f /tmp/crontab.tmp fi
Achtung: Bug mit doppeltem cron-daemon[1] in Firmware 2.6.3.1 (siehe hier[2]) kann zur Fehlverhalten führen, also vielleicht gleich zu Anfang des Scripts den vorgeschlagenen Bugfix einfügen (der alle laufenden cron-daemon killt und (nur) einen neuen startet):
#!/bin/sh (sleep 20;echo "only one crond ...";killall crond;/usr/sbin/crond)&
Vielleicht kompiliert auch jemand einen neuen crond? Auf der Box ist 2.3.3 und hier gibts ver3.2
