[SCRIPT] autorun.sh - Optware Dienste starten und beenden

  • Ich hatte schon vor es eh anders zu lösen ;)


    Also nicht das mit dem Path enviroment :arrow::D Hatte ich schon hier ^^
    Werde die autorun.sh noch einmal anpassen -> aber etwas anders ;)


    So angepasst. im 1. Thread zu finden.
    Jetzt sollte es ohne absolute Pfade funktionieren, auch werden jetzt einfach alle Festplatten / RAID Devices nach der Optware durchsucht.
    Diese änderung war notwenig, da es immer grössere NAS Modelle gibt.


    Danke noch einmal ;)


    Grüsse, David

  • Hallo und guten Morgen zusammen.
    Ich habe mal eine kurze Frage:


    In meiner S1......... Datei habe ich folgenden Code drin (die Autorun.sh habe ich von Beitrag #1 1:1 übernommen):


    Ich habe schon verschiedene Pfade versucht, jedoch kommt als Antwort beim manuellen Starten immer:
    /opt/etc/init.d/S1Python: line 6: /opt/hc/hcserver.py: Permission denied



    Hat hier zufällig jemand eine Idee, was ich hier falsch eingegen habe?


    Danke und Gruß
    Joggi

  • Zitat

    Hat hier zufällig jemand eine Idee, was ich hier falsch eingegen habe?


    Nix ;)
    Wenn Du /opt/hc/hcserver.py --daemon nicht manuell ausführen kannst, dann wird es mit dem init.d script auch nicht gehen ;)

    Code
    chmod +x /opt/hc/hcserver.py


    Dann ist die Datei ausführbar.


    Zusätzlich muss bei einem Python Script auch die Shebang stimmen.


    Grüsse, David

  • Hallo,
    danke für die erste Antwort.
    Also wenn ich manuell ins Verzeichnis gehe und python hcserver.py eingebe, dann funktioniert das ganze.
    Nur wenn ich das Script manuell starten will, dann kommt diese Fehlermeldung.


    Gruß
    Joggi

  • Hi,


    dann heisst es aber:

    Code
    python hcserver.py --daemon


    für den Start.
    und

    Code
    python hcserver.py --quit


    für das Beenden.


    Python führst Du aus und nicht hcserver.py direkt. Immer 1:1 (So wie man es manuell ausführt) in das init.d script.


    Grüsse, David

  • Hallo,
    sorry das ich nochmal nachfragen muss. Anscheinend stelle ich mich etwas zu b...öd an.


    Ich will eigentlich http://www.ctrl-h.de/cms/news.php auf meiner QNAP ausführen.
    Wenn ich das ganze in PuTTY ganz manuell starte, dann funktioniert das ganze auch. Jedoch müsste bzw. will ich das komplett durchlaufen lassen, auch wenn mein Rechner nicht an ist. Und hierzu habe ich die Scripte ausprobiert.
    Mit und ohne python vor den hcserver.py......................... aber mit python davor, kommt beim /opt/etc/init.d/S1Python start ein No such file or directory und ohne kommt ein Permission denied.
    Ich hab grad den halben Sonntag probiert und das super Forum hier durchgesucht. Aber leider komme ich nicht wirklich weiter.
    Fall´s jemand eventuell einen Tipp hab würde ich mich freuen und danke schonmal im Vorraus.


    Gruß
    Joggi

  • Hallo Terz


    Irgendwie bin ich unfähig dein "Script mit LOG-Ausgabe" auf mein OpenVPN anzupassen.


    Von hand navigiere ich in das Verzeichnis

    Code
    /opt/etc/openvpn


    Da gebe ich dann den Befehl

    Code
    openvpn easy.conf


    Und dann tut alles so wie es sollte.....
    Wie Packe ich nun die Sache in dein Script?


    LG
    mike

  • Code
    openvpn /opt/etc/openvpn/easy.conf


    openvpn und der Pfad zu der Konfiguration ;)


    Grüsse, David

  • Hallo David


    Ok danke für die schnelle Antwort. :thumb:
    Leider startet der VPN-Server so nicht. :(
    Ich habe da wohl was falsch verstanden mit dem Einfügen nach den Zeilen /sbin/log_tool ....?


    Wenn du bitte kurz drüberschauen kannst....?
    Mein Script sieht wie folgt aus:


    Vielen Dank für deine Zeit...

  • Hi,


    sieht richtig aus.
    Startet openVPN dann via:

    Code
    openvpn /opt/etc/openvpn/easy.conf


    Grüsse, David

  • Hallo,


    Nach dem Lesen dieses Thread habe ich versucht, auf meiner 219P+ ein Init- Skript zum Laufen zu bringen, dass wiederrum ein Perl-script zum Auslesen meiner Wetterstation startet. Leider funktioniert dies nicht zuverlässig, da das Auslesen nicht mit jedem Neustart des NAS gestartet wird. Die "Autorun.sh" im flash- Speicher habe ich aus dem Code aus dem ersten Beitrag übernommen. Mein Init-script lautet S99ws500 und schaut so aus:



    Das Laden der Kernel-Module ist sicherlich nicht ideal, allerdings habe ich bislang noch keine andere Lösung gefunden. Das Script funktioniert allein und im Zusammenspiel mit der autorun.sh beim manuellen Ausführen ohne Probleme. Beim Neustart des NAS wird aber nicht jedesmal der Dämon gestartet:


    • Beim Kaltstart habe ich teilweise einen Erfolg.
    • Beim Reboot nie


    Wird das Script erfolgreich ausgeführt, dann steht nichts im Systemlog, dagegen wird beim reboot der gescheiterte Versuch mit der Meldung "Starting ws500_readout" angezeigt.


    Hat jemand eine Idee, was ich falsch mache?


    Gruß

  • Hi Jürgen,


    die Module so laden ist schon ok.
    Das andere deutet auf ein Problem mit dem Perl script.


    Was genau hast Du innerhalb des Perl script's als Shebang definiert, wenn Du es direkt aufrufst.

    Code
    #!/opt/bin/perl


    ?


    oder rufe das script einfach via Perl auf. Beispiel:

    Code
    /opt/bin/perl /share/MD0_DATA/custom/weather/ws500.pl


    Wenn das Perl script auch etwas ausgibt, dann ist das auch nicht wirklich prickelnd.


    Das wird auch der Fall sein, da ja nicht immer etwas im Log steht. Im Log sollte immer etwas stehen. (/sbin/log_tool -a "Starting ${NAME}" -t 0 -u SYSTEM -m LOCAL)


    Grüsse, David

  • Hallo David,


    Das ursprüngliche Shebang im Perl script lautet:


    Code
    #!/opt/bin/perl -w


    Ich habe zwei Tests gemacht:

    • Einmal ohne "-w" im Perl-Script
    • Einmal mit dem Direktaufruf von Perl mittels des Scripts


    In beiden Fällen hatte ich keinen Erfolg. Im zweiten Fall habe ich das Script auch manuell mit der Befehlszeile gestartet, wobei diesmal keine Verbindung mehr zur Datenbank hergestellt werden konnte! Ich habe dann festgestellt, dass mittlerweile die Datenbank in mySQL nicht mehr vorhanden ist (Das perl-script liest die Daten aus der Wetterstation aus und speichert diese in einer mySQL-Datenbank). Heute Nachmittag konnte ich mir allerdings noch direkt in der Datenbank die Werte ansehen. Warum nun diese Datenbank nicht mehr existiert kann ich nicht sagen. Gelöscht habe ich sie nicht.


    Die ganze Problematik ist mit dem Firmware-update von "3.4.2_Build0331" auf "3.5.2_Build1126" entstanden. Im alten Zustand habe ich das Perl-script direkt aus "autorun.sh" gestartet. Dies hatte nach dem Update nicht mehr funktioniert. Sollte ich vielleicht den alten Stand wieder einspielen und versuchen, dort die Skripte zum Laufen zu bringen?


    Gruß

  • Eine Möglichkeit wären die libs…


    Probiere mal ein:
    ipkg update && ipkg upgrade
    aus.


    In der Tat, wenn die DB nicht mehr existiert, die einfach noch ma anlegen.
    Wenn möglich kannst Du ein php script draus machen?
    Weil php iss out-of-the-box mit dabei.


    Grüsse, David

  • Hallo David,


    Ich werde mich an meinen freien Tagen damit auseinander setzen. Vielleicht setze ich das NAS komplett neu auf. Derzeit lass ich den SMART-Test über die Festplatten laufen. Mich macht vor allem der Verlust der kompletten Datenbank in MySQL stutzig. Ich glaube, dass ich das Anlegen der Datenbank über ein Script mit SQL- Anweisungen gemacht habe.


    Ich werde mich noch einmal melden.

  • Hallo,


    Gestern und heute habe ich mich erfolgreich mit der Thematik auseinander gesetzt :D


    Das Problem an meiner Geschichte lag an den ipkg- Paketen. Zum Eintragen der Daten in MySQL benötigte ich das Paket "perl-dbd-mysql". Leider zog dieses das Paket "mysql" nach, so dass ich unzweckmäßiger weise zwei konkurrierende MySQL-Server am Laufen hatte. Ich habe dann zunächst alle "Perl-*" Pakete deinstalliert und anschließend nur noch "Perl" wieder installiert. Mittels des Beitrages http://forum.qnapclub.de/viewtopic.php?f=105&t=2769 konnte ich dann die benötigten Perl-Module selbst erstellen. Das automatische Starten funktionierte dann bei mehreren Systemstarts tadellos.

  • Hallo,
    Farage zum:

    Zitat

    Änderung 7. Juli 2011:
    Überprüfen ob das init.d script überhaupt beim Starten und Herunterfahren ausgeführt wird.


    Zitat

    Das ganze geschieht via dem log_tool.
    Wenn man allerdings viele init.d script's hat, kann es irgendwann einfach nur "voll" in den Systemprotokoll werden. Ich empfehle es einfach nur zum testen. Danach könnte man die Zeile /sbin/log_tool..... einfach löschen (so würde wieder ruhe im Systemprotokoll einkehren).


    Wenn das NAS beim Starten das init.d script aufruft, es ein "start und stop" gibt, jedoch das was man ausführen möchte nicht ausgeführt wird, dann weiss man schon einmal, dass es am init.d script liegt.
    Hier nun die Vorlage:
    Vorlage eines init Script's mit "Log" Ausgabe im AdminCP (Starten und Beenden):


    Wie und wo kann ich den Systemprotokoll finden?
    Was ist AdminCP?


    Ich habe folgendes gemacht:
    1. mount -t ext2 /dev/mtdblock5 /tmp/config
    2. autorun.sh zum editieren geöffnet: nano /tmp/config/autorun.sh
    3. 1:1 dein Skript von Seite 1 kopiert und gespeichert
    4. Ausführbar gemacht: chmod +x /tmp/config/autorun.sh
    5. Unmountet: umount /tmp/config
    6. In /opt/etc/init.d Verzeichnis dein Vorlage-Skript (Änderung 7. Juli 2011) erstellt. 1:1 Kopie. Name des Skriptes: STest (ohne.sh)
    7. Ausführbar gemacht: chmod +x /opt/etc/init.d/STest
    8. Reboot
    9. Wo und wie finde ich den Log jetzt?



    Ps.
    Alles auf TS-219P II