Autorun.sh bei Encrypted?

  • Hallo,


    ich hoffe ich habe alles richtig gemacht, bitte überprüf das mal jemand bevor der SUPER GAU passiert wenn ich meine QNAP neustarte ... :P


    Ich gehe das mal Schritt für Schritt durch was ich gemacht habe ...


    • Per SSH auf meine Qnap
    • mount $(/sbin/hal_app --get_boot_pd port_id=0)6 /tmp/config
    • touch /tmp/config/autorun.sh
    • chmod +x /tmp/config/autorun.sh
    • mkdir /share/XYZ/.qpkg/autorun2 (dort liegt schon eine Autorun Datei ...??)
    • $EDITOR /tmp/config/autorun.sh WARUM Steht da "&"???
      Bash
      #!/bin/sh/share/XYZ/.qpkg/autorun2/autorun.sh &
    • umount /tmp/config
    • #done
    • cd /share/XYZ/.qpkg/autorun2/
    • touch autorun.sh
    • chmod +x autorun.sh


    Soweit so gut... Hoffe ich? Dann habe ich versucht wegen meines beim start NICHT entschlüsselnden Systems eine Wait nach anleitung zu machen.


    Also eine Datei 'waitforenc.sh' mit Chmod erstellt mit Inhalt:


    Code
    #! /bin/sh# This script ends after the encrypted filesystem has been mounted.# The following exits successfully (0) if MD0 is mountedcat /etc/mtab | grep -q MD0while [[ $? -ne 0 ]] ; do        sleep 5        cat /etc/mtab | grep -q MD0done


    Dann habe ich eine replace_openvpn.sh erstellt auch mit chmod. Erst einmal nur leer als dummy.


    Habe dann in die autorun.sh folgende Zeile:

    Code
    #! /bin/sh(./waitforenc.sh; ./replace_openvpn.sh) &


    Wenn ich jetzt einfach testweise ./autorun.sh anschmeiße kommt folgender Fehler:


    Code
    ./waitforenc.sh: line 7: syntax error near unexpected token `;;'
    ./waitforenc.sh: line 7: `while [[ $? -ne 0 ]] ; do'


    Also, meine Fragen sind einfach... :D


    • Habe ich bisher so alles richtig gemacht?
    • Warum der Ordner autorun schon belegt, bzw. warum liegt dort eine Datei mit 0b (Wenn ich in der Filestation gucke)
    • Warum kommt der Fehler bei dem waitforenc
    • Habe ich alles so richtig verstanden bzw. sind die Dateien für die Ausführung so richtig? Ich will im Endeffekt eine "Haupt autorun.sh" in dem .qpkg Ordner, die andere .sh ausführt. Dann will ich das die anderen .sh so lange warten bis die Festplatte entschlüsselt ist, aber damit nicht andere blockieren, deswegen die waitforenc.sh, aber was ist mit der Haupt autorun im System? Die "wartet" ja nicht auf die Entschlüsselung ...?!



    Hoffe auf Antwort und kein Gemecker, hab schon Meister DuckDuckGo.com beauftragt, hat aber nix gefunden.


    MFG

  • while [[ $? -ne 0 ]] ; do

    Ist das   gewollt oder durch die Anzeige des Quellcodes eingefügt worden ?



    Wenn das erste Volume verschlüsselt ist, bekommt es doch keinen Zugriff auf den ordner /share/XYZ/.qpkg/autorun2/
    Das Script "waitforenc.sh" müßte schon im Flash liegen, damit es ausgeführt werden kann.

  • Hallo,


    wie mache ich das? Bleibt das dann auch immer da? Und, tut das dem Flash weh? :D Bei Flash reden wir von dem RAM oder? Net das ich da irgendwann was irreparables zerstöre ..?


    das " " weiß ich nicht, kenn mich damit nicht so aus ... habe die Anleitung hierher: Qnap Autrun.sh Wiki


    MFG

  • das " " weiß ich nicht, kenn mich damit nicht so aus

    Das   ist für HTML ein Leerzeichen und gehört nicht in das Script.


    Der Flash ist nicht der RAM, aber sollte nicht so oft beschrieben werden, daher wird das eigentliche Script auch auf der Festplatte erstellt.
    Einmal in den Flashspeicher geschrieben, macht es keinen Schaden.
    Das Script ist aber nur zur Bootzeit direkt aufrufbar.

  • Hallo,


    Kannst du mir das mal schritt für schritt hin schreiben? Auch wie ich die Autorun oben wieder neu erstelle bzw editiere. Also wie ich die wait rein bekomme und das er auch waited. Wie groß ist der Schaden wenn ich sowas rein schreibe, also habe ich die Lebenserwartung meiner Qnap jetzt schon reduziert?


    Mit freundlichen Grüßen

  • Hi,
    die "autorun.sh" ist im Flash.
    Also solltest du kein anderes script aufrufen, sondern alles in die autorun.sh schreiben, aber keine Romane

  • Hallo,
    genau deswegen hoffe ich auf eure hilfe ...? :D
    Wie ich das "Wenn verschlüsselt dann warte bis entschlüsselt und dann starte /share/XYZ/.qpkg/autorun2/autorun.sh"
    In die QNAP geschrieben bekomme ... :)


    MFG

  • Kannst du bitte deinen 1. Post nehmen und genau sagen, was jede Zeile bewirken soll.

  • Das weiß ich auch nicht genau, habe nur Tutorials ausgeführt.


    Wie gesagt, ich möchte eine Autostart im System (Flash) haben, die bei jedem start ausgeführt wird und natürlich guckt ob meine Festplatte noch verschlüsselt ist und wartet, anstatt alles anzuhalten. In der Autostart vom flash soll nur auf meine autostart im .qpkg/autostart2/autostart.sh verwiesen werden, wo ich dann alle meine änderungen etc pp mache.


    MFG

  • WAS WILLST DU ERREICHEN?
    Was soll denn passieren beim Start deiner QNAP oder danach oder später?
    Mach doch mal eine Aufgabenbeschreibung!

  • Ich will die OpenVPN datei ersetzten, erstmal, danach mal weiter schauen. :) Der OpenVPN Client taugt ja eig nie was, egal wo man sich einen VPN holt die OpenVPN userdaten müssen ja immer abgeändert werden ...


    MFG

  • Hallo,


    da sich hier nichts mehr getan hat frage ich nochmal nach einem Tutorial wie ich die Autorun so erstelle, dass sie auf eine externe Datei zugreift, aber nur wenn die Festplatte entschlüsselt ist ... vor ich hier noch irgendwann mein Flash zu himmeln?


    MFG


    WAS WILLST DU ERREICHEN?
    Was soll denn passieren beim Start deiner QNAP oder danach oder später?
    Mach doch mal eine Aufgabenbeschreibung!

    Ich will eine Autorun in meinem Flash, die auf eine andere Datei in meiner NAS verweist und das solange wartet bis meine Festplatte entschlüsselt ist, aber nicht die anderen Sachen solange blockiert...

  • ";;" ist falsch in deinem script.
    Würdest du bitte nochmals dein script posten!


    Weiter denke ich, dass dies nicht über die autorun.sh funktioniert.
    Guck dir mal initd an.

    Einmal editiert, zuletzt von frosch2 ()

  • von dem autorun zeug habe ich keine ahnung, habe nur das gemacht was da oben steht. wie lasse ich mir anzeigen was in meiner flash autorun steht?


    MFG

  • Erklärungen über Scriptbefehle findest du ua. hier : SelfLinux
    Dies solltest du dir anschauen.



     

    Wie ich schon schrieb, ist dies ein Teil von HTML und gehört in keinem Script.




    Du benötigst im Flash 2 Scripte:
    1.) die "autorun.sh", da diese beim Starten vom System aufgerufen wird (ebenso Scripte in /etc/init.d).
    In dem Script reicht ein Aufruf des zweiten Scriptes "waitforenc.sh"
    Damit der Flash-Speicher auch mit Sicherheit abgehangen (unmount) werden kann, kopiere ich das Script in den tmp-Ordner.


    Bash
    #! /bin/shCMD_ECHO="/bin/echo"${CMD_ECHO} "Execute waitforenc.sh"/bin/cp /tmp/config/waitforenc.sh /tmp/waitforenc.sh/tmp/waitforenc.sh &${CMD_ECHO} "End of waitforenc.sh"


    Das & ist dafür da, dass das Script im Hintergrund weiter ausgeführt wird.


    2.) die "waitforenc.sh" wird dann so aussehen:


    Bash
    #! /bin/sh# This script ends after the encrypted filesystem has been mounted.# The following exits successfully (0) if MD0 is mountedCMD_ECHO="/bin/echo"WAITFOR="MD0"${CMD_ECHO} "Wait for '${WAITFOR}'"cat /etc/mtab | grep -q ${WAITFOR}while [ $? -ne 0 ]; do        sleep 5        cat /etc/mtab | grep -q ${WAITFOR}done${CMD_ECHO} "Mount of  ${WAITFOR} found !"

    Das Device, worauf es warten soll, habe ich mit der Variable WAITFOR gesetzt.
    Am Ende vom "waitforenc.sh" kannst du weitere Befehle hinzufügen, die ausgeführt werden sollen, sobald das Laufwerk gemountet ist.


    Beide Scripte müssen natürlich ausführbar gemacht werden, zB. "chmod +x /tmp/config/autorun.sh" und chmod +x /tmp/config/waitforenc.sh"



    Den Flash-Speicher erreichst du mit


    Bash
    mount $(/sbin/hal_app --get_boot_pd port_id=0)6 /tmp/config

    bzw.
    Mount Script von dr_mike


    Ehrlich gesagt, wenn du nicht das eigene Interesse hast, es zu verstehen und dich selbst in das Thema hineinliest, solltest du dein Vorhaben beenden.
    Wie du schon schreibst, kann das NAS im schlimmsten Fall im Bootvorgang hängen bleiben.