Packages:userscript

Aus NAS-4220

Wechseln zu: Navigation, Suche

original Forenbeitrag

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:

  1. 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
  1. 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

--Ozett 18:28, 23. Apr. 2009 (CEST)
Persönliche Werkzeuge
Andere Sprachen