[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" 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:



    Shell-Script: Start / Stop Skript - autorun.sh
    1. #!/bin/sh#autorun.shstart(){echo `date` Start APP "AutoRun" autorun.sh >> /var/log/autorun.log# Autorun ausführen bei shutdown/restart/poweroffln -s /share/MD0_DATA/.qpkg/autorun/autorun.sh /etc/rcK.d/K01autorun# ab hier alles eintragen was noch beim "start" ausgeführt werden soll# Ende - was beim "start" ausgeführt werden soll}stop(){ echo `date` Stop autorun.sh >> /var/log/autorun.log# ab hier alles eintragen was noch beim "STOP" ausgeführt werden soll# Ende - was beim "STOP" ausgeführt werden soll}# you do not need to edit this linescase "$1" in start) start ;; stop) stop ;; restart) # Restarting the Daemon $0 stop $0 start ;; *) ## If no parameters are given, print which are avaiable. echo "Usage: $0 {start|stop|restart}" exit 1 ;;esacexit

    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
    1. [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
    1. [admin@NASSIE CE_CACHEDEV1_DATA]# ls /tmp/config
    2. 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:


    Shell-Script: search_autorun.sh
    1. #!/bin/sh
    2. # Suche locale autorun.sh
    3. for Auto_Dir in `ls -d /share/* | grep "_DATA" | sort`
    4. do
    5. if [ -x ${Auto_Dir%/}/.qpkg/autorun/autorun.sh ]; then
    6. echo ausführbare "autorun.sh" im Verzeichnis $Auto_Dir/.qpkg/autorun gefunden
    7. exit
    8. fi
    9. done
    10. 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

    Einmal editiert, zuletzt von silencshadow ()

  • 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ß

    Einmal editiert, zuletzt von silencshadow ()

  • 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?

  • 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
    1. TAS-x68, TS-x28 use ...
    2. /bin/mount -t ext4 /dev/mmcblk0p7 /tmp/config
    3. vi /tmp/config/autorun.sh
    4. chmod +x /tmp/config/autorun.sh
    5. 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!!