QNAP autostop.sh - Skripte beim Herunterfahren automatisch ausführen

  • hallo,


    mit einem Trick durch die Hintertür geht dies!


    Du richtest dir "autorun" ein. Kannst ja dafür auch mein Script, zu finden in Installation von OWNCloud , nutzen. Das LIBXML Zeug - wenn du es dann nicht brauchst - kannst du aus der localen autorun.sh entfernen.


    Du erstellst dir ein Script in dem all dies gemacht wird, was du beim runterfahren ausführen willst. Durch die locale autorun.sh lässt du dieses Script immer nach /etc/init.d kopieren. Ebenso lässt du durch die locale autorun.sh einen symlink in /etc/rcK.d erstellen der auf dein Script in /etc/init.d verweist. Achtung - auf die Namenskonvention achten die in /etc/rcK.d benutzt wird. Die Nummerierung gibt die Reihenfolge der Abarbeitung der Scripte beim Runterfahren an!

    Das Script auf das ich oben verweise macht dies alles für dich! Du musst nur noch in die autorun.sh (in der stop Sektion) die Dinge eintragen was beim reboot/shutdown/poweroff gemacht werden soll.


    mfg kasimodo

    2 Mal editiert, zuletzt von kasimodo () aus folgendem Grund: bessere Lösung

  • Danke kasimodo, aber so ganz verstehe ich Deinen Ansatz nicht oder kann Deinen Trick nicht nachvollziehen.
    Ich suche eine Methode welche beim initiierten Herunterfahren des NAS mir noch zusätzlich die Möglichkeit gibt ein Skript auszuführen.


    zum Beispiel: Ich kenne Ansätze unter Linux-Distributionen welche beim Wechsel des runlevels reagieren, dass wäre perfekt.... und da bei unseren QNAPs ja ein Ubuntu unter der Haube steckt, müsste da doch was möglich sein ?!

  • Genau das macht die autorun.sh in verbindung mit dem symlink in /etc/rcK.d


    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:



    Bash: Start / Stop Skript - autorun.sh
    #!/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 ()

  • Bin derzeit noch im Urlaub - werde ich mir in ca. 2 Wochen aber anschauen. Danke vorab.
    Da wohl einige QUser ähnliche Anforderungen haben werde ich versuchen hier eine Step by Step Anleitung für ein einfaches Autostop Skript zu posten (oder Du?). Anhand meiner Anforderung: ein vorher manuell gemountetes NFS share per Autostop (bei Herunterfahren) zu unmounten. Wobei das auszuführende Skript denkbar einfach ist - in meinem Fall nur aus einem Befehl besteht:


    Bash
    #!/bin/sh
    umount /share/mydata/_temp/mntpoint


    Eine Lösung im Q-Forum sollte dann möglichst einfach und für Non-IT-Experts entstehen...... Also ein Autorun.sh skript welches lediglich den Symlink auf das obige Skript in /etc/rcK.d schreibt.
    Bin allerdings noch nicht sicher wie ich mein Skript (siehe oben) mit Argumenten wie "start" und "stop" ausstatten kann - Wie Du es als notwendig beschrieben hast. Wobei meinem Skript ja egal wäre welches $1 Argument übergeben wird.... es wird doch immer ausgeführt und stört sich auch nicht an Argumenten - oder liege ich da falsch?

  • Alle was du machen möchtest ist schon in den Scripten im oberen von mir Beitrag eingearbeitet.


    Du musst nur noch deinen Befehl umount /share/mydata/_temp/mntpoint in die "stop" Sektion eintragen.

  • Danke Kasimodo.
    Ich habe noch eine womöglich einfachere Methode recherchiert: Nicht nfs sondern smb mounts in der autorun.sh verwenden! Auch die manuell angelegten smb-mounts (also z.B. via autorun) werden beim Herunterfahren des QNAP automatisch und per default getrennt, so dass das NAS sauber runterfährt.