[SCRIPT] autorun.sh - Erstellen von Start- und Stopp-Scripten

  • [aus dem Thema QNAP autostop.sh - Skripte beim Herunterfahren automatisch ausführen kopiert.]


    Auf dem Qnap gibt es unter /etc die beiden Verzeichnisse rcS.d und rcK.d ! in diesen Verzeichnissen sind symlinks auf die Skripte unter /etc/init.d


    Beim Booten werden alle mit den Symlinks unter /etc/rcS.d verknüpften Scripte mit dem Parameter "start" ausgeführt.
    Beim Runterfahren/Reboot/Shutdown werden alle Skripte die in /etc/rcK.d verknüpft sind mit dem Parameter "stop" ausgeführt.


    Die mit den Symlinks verknüpften Skripte müssen nicht zwingend unter /etc/init.d gespeichert sein!


    Also brauchst du auf deinem System ein Script was mit dem Parameter "stop" aufgerufen werden kann und einen Symlink unter /etc/rcK.d der auf dieses Skript verweist. Da man keine Dateien oder Sysmlinks bootfest unter /etc anlegen kann muss dieser Symlink in /etc/rcK.d bei jedem booten vom NAS neu angelegt werden damit der beim Runterfahren vorhanden ist! Dies kann man mit "autorun.sh" beim Booten realisieren!
    Und wenn man schon mal ein Skript anlegt das beim Booten ausgeführt wird, was hindert daran dies Skript auch gleich dafür zu benutzen um dort alles einzutragen was auch beim runterfahren ausgeführt werden soll. Voraussetzung dafür ist, dass dieses Script die Parameter (Argumente) start / stop ünterstützt.


    Beispiel:



    Eventuell muss noch in Zeile 7 /share/MD0_DATA/.qpkg/autorun/autorun.sh der Pfad angepasst werden!


    Das weiter oben verlinkte Skript im anderen Beitrag ist ein Installationsscript was "autorun" auf dem QnapNAS einrichtet unabhänig vom NASTYP !!!!! Funzt auf NAS mit Intel , ARM und auch auf x31 usw.!



    Alles Klar?


    Hier noch mal das überarbeitete Installationsscripte, dass "autorun" auf deinem NAS (unabhänig von der verwendetetn Hardware) einrichtet. Ich habe u.a. noch diverse Kommentare zur Erklärung eingefügt.


    2 Mal editiert, zuletzt von kasimodo ()

  • Hier noch die neuere Version vom Script - mit der Option "OnlyMount" - diese zb bei der Fehlersuche auf "YES" setzen und der Flash wird nach /tmp/config gemountet.
    Da kann man dann die autorun.sh im Flash manuel anlegen bzw. bearbeiten.


    Im "automatik Modus" ("OnlyMount" gesetzt auf NO) wird auf dem QNAP NAS ohne Benutzereingabe "Autorun" eingerichtet. Dies Script sollte zum jetzigen Zeitpunkt auf allen Hardwaretypen von QNAP funktionieren.


    Diese autorun.sh im Flash startet dann die autorun.sh im Filesystem in der später alle Anpassungen die ihr vornehmen wollt stehen. Dadurch braucht ihr nur einmalig den Flash mounten könnt aber immer wieder bootfeste Anpassungen für euer System in der autorun.sh im Filesystem vornehmen.


    5 Mal editiert, zuletzt von kasimodo ()

  • Hey Kasimodo


    Auf meinem QNAP TS-431P mit Firmware 4.3.3.0361 will das create autorun nicht funktionieren.


    Er versucht mit der Logik /dev/mtd6 zu mounten und das failed.


    Irgendeine Idee ?


    Danke !


    Jay

  • Ich hatte letzte Woche aber von Anderen eine positive Rückmeldung!
    Schalte mal die Option "MountOnly auf "YES"
    Dann sollte unter "/tmp/Config" der Flash gemountet sein.
    Poste die Ausgabe vom Script nach dem Aktivieren von MountOnly und dann mal die Ausgabe auf der Konsole von ls /tmp/config

  • Hallo Gernot,


    wie wäre es, für die Weiterentwicklung der Scripte (hier das create_autorun.sh) eine Versionsnummer mit einzupflegen und diese als Kommentar auch in die autorun.sh zu setzen. Vorteil: Wenn man mal über Probleme sprechen muss, hat in der Diskussion "das Kind" auch einen Namen und man kann schnell abklären, ob jemand mit einem veralteten Script gearbeitet hat.


    Gruß Dirk

  • Ausgabe vom Mount Only Skript:

    Code
    [admin@NASSIE CE_CACHEDEV1_DATA]# ./auto_rn.shUBI device number 2, total 120 LEBs (15237120 bytes, 14.5 MiB), available 0 LEBs (0 bytes), LEB size 126976 bytes (124.0 KiB)Flash wurde nach /tmp/config gemountet!Nicht vergessen: umount /tmp/configNicht vergessen: ubidetach -m 6[admin@NASSIE CE_CACHEDEV1_DATA]#

    Ausgabe vom ls:

    Code
    [admin@NASSIE CE_CACHEDEV1_DATA]# ls /tmp/config
    smb.conf smb.conf.cksum system.map.key uLinux.conf
  • @Der Jay


    Alles TOP, der Ramblock wurde fehlerfrei gemountet!


    wenn noch nicht getan folgendes eingeben:
    umount /tmp/config
    ubidetach -m 6


    dann MountOnly wieder auf "NO" und Script nochmal ausführen!
    Du kannst danach wenn du möchstest das Script mit der Option MountOnly "YES" nochmal laufen lassen und mit ls /tmp/config nachschauen ob eine autorun.sh im Ramblock ist.


    Je nach NAS Typ und Konfiguration kann der Verzeichnisspfad der localen autorun.sh (die im normalen Filesystem) verschieden sein.
    Wenn du unsicher bist wo die zweite, die locale autorun.sh liegt führe das folgende Hilfescript aus:


    Bash: search_autorun.sh
    #!/bin/sh
    # Suche locale autorun.sh 
    for Auto_Dir in `ls -d /share/* | grep "_DATA" | sort`
    do
    	if [ -x ${Auto_Dir%/}/.qpkg/autorun/autorun.sh ]; then
    		echo  ausführbare "autorun.sh" im Verzeichnis $Auto_Dir/.qpkg/autorun gefunden
    		exit
    	fi
    done
    echo keine ausführbare "autorun.sh" gefunden

    Einmal editiert, zuletzt von kasimodo ()

  • Hey,


    kannst du das Script so ändern, das die autorun wartet bis die Festplatte entschlüsselt ist? Habe damit hier schon angefangen, aber kannst du das irgendwie zusammenführen?


    https://forum.qnapclub.de/thread/40573-autorun-sh-bei-encrypted/


    Brauche das ganze nämlich hierfür: https://forum.qnapclub.de/thread/45593-umfrage-für-eine-anleitung/?pageNo=1


    Grüße

  • Hi,


    Danke für die schnelle Antwort. Kannst du mir ggf dazu ein Beispiel machen? Oder ein Tutorial verlinken wo so etwas gemacht wird?


    Gruß

  • Ah ... oh man sorry, da hätte ich auch selber drauf kommen koennen... hab immer gelesen das die init.d nicht mehr richtig funktioniert?


    Na umso besser. Muss das einfach in eine ausführbare .sh packen und in init.d schieben oder?


    Kommt das auch mit einer encrypted Platte klar? Weil ich meine eigenhändig entsperre...


    Gruß

  • Der Scriptname muss mit einem 'S' und einer Zahl wie oben im Code beginnen. Das Script sollte dann gestartet werden, wenn EntwareNG startet und dies, wie auch alle anderen QPKGs, kann ja nur starten, wenn die Platte entschlüsselt wurde.

  • Nach einem Neustart sind die Dateien auf meinem TS431P2 in den Ordner /etc/init.d und der Symbolic Link in /etc/rcS.d einfach weg.


    Den anderen Weg über das Flash zu routen klappt auch nicht. Er sagt immer falscher Dateityp.


    Was mach ich falsch?

  • @silencshadow
    In dem Fall solltest du eher ein Start-/Stop-Script in /opt/etc/init.d/ verwenden (dazu wird EntwareNG benötigt).

    Also Entware-ng installieren und dann unter

    Code
    /opt/etc/init.d/

    speichern.

  • Hallo QNAP-Gemeinde,


    ich wollte bei meinem neuen NAS TS-228 (ARM®-v7) die Funktion autorun.sh nutzen.

    Dazu habe ich die Funktion unter "ControlPanel > Hardware > run userdefined procsess during startup" aktiviert. Siehe Bild 01 im Anhang.


    Dann habe ich die Anleitung unter https://wiki.qnap.com/wiki/Run…wn_Application_at_Startup befolgt:

    Code
    TAS-x68, TS-x28 use ...
    
    /bin/mount -t ext4 /dev/mmcblk0p7 /tmp/config
    vi /tmp/config/autorun.sh
    chmod +x /tmp/config/autorun.sh
    umount /tmp/config


    Die autorun.sh habe ich angelegt und wieder umount eingegeben. Siehe Bild 02 im Anhang.

    Manchmal wird zwar "device busy" angezeigt, aber nach einen Neustart geht es wieder.


    Leider hat das nicht funktioniert. :(

    Unter "ControlPanel > Hardware > autorun.sh" wird kein Inhalt angezeigt und der Autostart bei Neustart des NAS funktioniert auch nicht.


    Die autorun.sh ist aber nach dem Neustart des NAS mit dem Inhalt noch da.


    Was mach ich falsch? Wo ist das Problem


    Danke für Eure Hilfe!!

  • Hallo Gemeinde,


    bei der Suche nach der Möglichkeit bei meinem alten TS-469L automatisch den paperless-ngx Stack in Docker auf einem RaspberryPi herunterzufahren, sobald das NAS herunterfährt, bin ich auf diesen Thead gestoßen.


    Das klang vielversprechend. Musste dann schnell feststellen, dass es bei mir keine autorun.sh gab.

    Dabei bin ich im Nachbarforum (hoffe Verlinkung ist ok) fündig geworden und auf ein create-autorun Skript gestoßen, was QNAP unabhängig funktioniert.


    Das hat mir dann das autorun.sh Skript in folgendem Verzeichnis erstellt:


    /share/MD1_DATA/.system/autorun/autorun.sh


    Nun heißt es, dass in folgendem Verzeichnis Skripte zum Start angelegt werden können:


    /share/MD1_DATA/.system/autorun/scripts


    Das würde ich dann auch gleich dafür nutzen wollen, dass der paperless-ngx Stack automatisch nach dem hochfahren wieder gestartet wird.

    Wie könnte man jetzt am besten beide autorun.sh Skripte verheiraten?


    Idealerweise, dass man im gleichen Ordner die Skripte für den Start und Stop hinterlegt?


    Wäre um jede Hilfe dankbar.


    Gruß

    sTaNy

  • Verstehe ich nicht, das zweite Script im ersten Post bietet doch beides!???

    Da ist ein Bereich der beim Stop ausgeführt wird, und ein anderer, der beim Start ausgeführt wird.

    Das Script läuft bei mir auf mehreren NAS einwandfrei.


    Gruss


    Edit: Außerdem wird damit auch eine autorun.sh angelegt, da muss man nicht in ein Nachbarforum ;) .

  • Das habe ich dann wohl völlig falsch verstanden, dass das Skript auch automatisch eine autorun.sh anlegt. :( Da bei mir keine vorhanden war, dachte ich, ich muss generell erst mal autorun.sh zum Laufen bringen. Ist ja ein recht altes QNAP NAS TS-469L mit QTS 4.3.4


    Nun hatte ich bereits das create-autorun.sh Skript ausgeführt und er hat mir auch brav eine autorun.sh angelegt. Und zwar unter:


    /share/MD1_DATA/.system/autorun/autorun.sh


    Dazu noch den Ordner:


    /share/MD1_DATA/.system/autorun/scripts


    Dort könnte ich Skripte beim Starten des NAS ablegen. Das habe ich mal mit meinem start_paperless.sh Skript probiert und klappt auch. Da ich aber auch gern ein stop_paperless.sh Skript vor dem Herunterfahren ausführen möchte, würde ich gern die autostart.sh hier aus diesem Forum verwenden.


    Die scheint aber so nicht zu funktionieren, bzw. scheint er nicht auf diese zurückzugreifen.


    Jetzt habe ich das Skript hier einfach mal ausgeführt und mit der Option Flash=YES getestet. Das war erfolgreich. Dann anschließend Flash=NO und er hat mir ohne Fehler angelegt:


    Code
    [/share/Backup/QNAP/Skripte] # bash autorun.sh 
     Flash wurde nach /tmp/config gemountet! 
     Neue autorun.sh(MTD) wird angelegt! 
     Neue autorun.sh (local) wird angelegt! 
    ===========================================================================
    Deine locale autorun.sh befindet sich in /share/MD1_DATA/.qpkg/autorun
    ===========================================================================
    Fertg! - Ende!


    Wenn ich im QNAP Web Interface schaue, zeigt er mir auch noch die alte autorun.sh (von dem create-autorun.sh Skript) an und bei einem Neustart bzw. Stop/Start führt er auch nicht die Skripte aus, die ich in der autorun.sh hier aus dem Forum integriert habe.

    Überschneidet sich jetzt hier etwas? Wie kann ich troubleshooten, auf welche autorun.sh er zugreift?


    Danke und sorry für die Probleme, die ich mir ja offensichtlich selbst eingebrockt habe.


    Gruß

    sTaNy