[QPKG] SHUTDOWN - ua. wenn kein Client erreichbar ist

  • Zitat von "Omar Hawk"

    Wie hast du die Squeezebox-Abfrage gelöst? Ebenfalls über netcat?


    ja, ich habe es erstmal bis auf ein paar Konsolenausgaben komplett übernommen.


    Dazu wollte ich noch eine Abfrage einbauen,
    ob bestimmte Dienste aktiviert bzw. notwendige Zusatzsoftware installiert sind,
    diese dann ausblende bzw. als "not available" oder "deactivated" vermerke.

  • Hallo Eraser,


    Ich hab mal schnell einen Blick auf die letzte Version geworfen. Folgendes ist mir aufgefallen:

    • Squeezebox - die Abfrage funktioniert, aber es gibt keinen Eintrag in's Syslog
    • Twonkymedia - wird in GUI und Syslog als "NOT ACTIVATED" angezeigt, obwohl der Twonky-Server läuft und auch wenn ein Stream aktiv ist
    • pyLoad - wird in GUI und Syslog als "NOT AVAILABLE" angezeigt, obwohl der pyLoad-Server und auch ein Download läuft


    Bei pyLoad liegt es an der Variable {QPKG_DIR}, die im Kontext des Scripts mit /share/MD0_DATA/.qpkg/Wait4PC befüllt ist, aber natürlich bei diesem Aufruf nichts findet:

    Code
    func_get_app_pyload () {
      bAppPYLOAD=
      if [ ! -f "${QPKG_DIR}/pyLoadCli.py" ]; then
        func_set_pyload_notavailable
      fi
    }


    Bei dem Fehler für Twonkymedia hab ich nicht herausgefunden, woran es liegt (ist bei fremdem, komplexen Code nicht so einfach ... ;) ) - bei meinem Script funktioniert es aber einwandfrei!


    Zwei weitere Fragen hab ich aber noch unabhängig

    • Ping - sollten die Ip-Adressen von pingbaren Hosts nicht in grün angezeigt werden?
    • Ich hab bei meinem Script derzeit 2 Einträge in der crontab (um an Wochenenden zu anderen Zeiten die Überprüfung zu starten) - da das über die GUI nicht geht, spricht was dagegen, wenn ich das weiterhin direct über die Crontab mache?


    Omar

  • Zitat von "Omar Hawk"

    Bei pyLoad liegt es an der Variable {QPKG_DIR}, die im Kontext des Scripts mit /share/MD0_DATA/.qpkg/Wait4PC befüllt ist


    Oh ja.
    Könntest du mir dazu den pyLoad-Bereich aus der /etc/config/qpkg.conf posten ?
    Dann werde den korrekten Pfad aus der Konfig holen.


    Zitat von "Omar Hawk"

    Twonkymedia - wird in GUI und Syslog als "NOT ACTIVATED" angezeigt


    Mhh, das hatte bei mir funktioniert.
    Hattest du auch die letzte Version (V1.5.0.1) getestet?


    Zitat von "Omar Hawk"

    Squeezebox - die Abfrage funktioniert, aber es gibt keinen Eintrag in's Syslog


    Muß ich überprüfen bzw. möglich, das ich es noch nicht berücksichtigt habe :(


    Zitat von "Omar Hawk"

    Ping - sollten die Ip-Adressen von pingbaren Hosts nicht in grün angezeigt werden?


    genau


    Zitat von "Omar Hawk"

    Ich hab bei meinem Script derzeit 2 Einträge in der crontab (um an Wochenenden zu anderen Zeiten die Überprüfung zu starten)


    Ist möglich und sollte eigentlich auch über die WebGUI möglich sein,
    evtl. hat sich dort auch ein Fehler eingeschlichen :(

  • Zitat von "Eraser-EMC2-"


    Könntest du mir dazu den pyLoad-Bereich aus der /etc/config/qpkg.conf posten ?
    Dann werde den korrekten Pfad aus der Konfig holen.



    Zitat von "Eraser-EMC2-"


    Mhh, das hatte bei mir funktioniert.
    Hattest du auch die letzte Version (V1.5.0.1) getestet?


    Ja, ich hab die letzte Version! Kann ich irgendwas zur Lösung beitragen? Wenn du mir sagst wo bau ich auch gerne Debug-Code ein!

    Zitat von "Eraser-EMC2-"


    genau


    Tut es aber nicht ... :(

    Zitat von "Eraser-EMC2-"


    Ist möglich und sollte eigentlich auch über die WebGUI möglich sein,
    evtl. hat sich dort auch ein Fehler eingeschlichen :(


    Es gibt bei der Sektion "Crontab entry for the check interval :" kein "Add" so wie es das bei "Crontab entries for a controlled shutdown :" gibt!


    Omar

  • Zitat von "Omar Hawk"

    Ja, ich hab die letzte Version! Kann ich irgendwas zur Lösung beitragen? Wenn du mir sagst wo bau ich auch gerne Debug-Code ein!


    Ich denke, ich habe den Fehler in meiner Logik der Abfragen gefunden ;)


    Zitat von "Omar Hawk"

    Es gibt bei der Sektion "Crontab entry for the check interval :" kein "Add" so wie es das bei "Crontab entries for a controlled shutdown :" gibt!


    OK, ich sehe keinen Sinn darin, mehrere Intervalle einzutragen, sollte aber keinen Einfluß auf die WebGUI haben.

  • Zitat von "Eraser-EMC2-"

    OK, ich sehe keinen Sinn darin, mehrere Intervalle einzutragen, sollte aber keinen Einfluß auf die WebGUI haben.


    Der Grund ist ganz einfach - während der Woche ist bei mir am Vormittag niemand zu hause - deshalb kann die Shutdown-Überprüfung auch dann laufen. Am Wochenende soll sie das aber nicht.
    Der Eintrag in der Crontab schaut dann so aus:

    Code
    */30 22-7 * * *
    */30 8-12 * * 1-5


    Omar

  • OK, das macht Sinn.
    Das Script verändert ungewollt keine Crontab-Einträge.


    In der Vergangenheit hatte ich intern schon die Möglichkeit eingebaut,
    auch bei den Intervallen mehrere Crontab-Einträge zu erstellen.
    Mal schauen, ob ich es reaktivieren kann.


    Wahrscheinlich werde ich heute Abend eine überarbeitete Version hochladen

  • Zitat von "Eraser-EMC2-"

    In der Vergangenheit hatte ich intern schon die Möglichkeit eingebaut,
    auch bei den Intervallen mehrere Crontab-Einträge zu erstellen.
    Mal schauen, ob ich es reaktivieren kann.


    Ist aber kein Beinbruch, wenn das nicht klappt - solange die GUI den 2. Eintrag nicht überschreibt / löscht ist das OK! :D


    Zitat von "Eraser-EMC2-"

    Wahrscheinlich werde ich heute Abend eine überarbeitete Version hochladen


    Sobald ich Zeit hab teste ich wieder! :thumb:


    Omar

  • Zitat von "Omar Hawk"

    Ist aber kein Beinbruch, wenn das nicht klappt - solange die GUI den 2. Eintrag nicht überschreibt / löscht ist das OK!


    Ich brauchte nur einige Funktionen kopieren, die Flüchtigkeitsfehler zu finden hat länger gedauert.


    So, ich habe nun die beiden Bereiche "Dienste" und "Ping" einklappbar gemacht,
    so das die Seite etwas kürzer ist.
    Was meinst du dazu, sinnvoll ?
    Irgendwie bekomme ich den Service-Block nicht wieder auf volle Breite. :cursing:

  • Zitat von "Eraser-EMC2-"

    Ich brauchte nur einige Funktionen kopieren, die Flüchtigkeitsfehler zu finden hat länger gedauert.


    Klappt super und funkt genauso wie gewünscht! :)


    Zitat von "Eraser-EMC2-"

    So, ich habe nun die beiden Bereiche "Dienste" und "Ping" einklappbar gemacht,
    so das die Seite etwas kürzer ist.
    Was meinst du dazu, sinnvoll ?


    Auf jeden Fall, vor allem wenn man so wie ich meistens am Notebook mit niedriger Auflösung arbeitet (auf meinem großen 24-Zöller ist es sicherlich kein Thema ;) ) - ich glaub es wäre noch sinnvoller wenn sich die GUI die Einstellungen merken würde ... Aber das ist nur ein unverschämtes Nice 2 have ... :roll:


    Auch die Anzeige der pingbaren Hosts klappt jetzt einwandfrei.


    Jetzt aber zu den weniger positiven Meldungen:
    Die Überprüfungen für Twonky und pyLoad funktionieren immer noch nicht, die Überprüfung der Squeezeboxen nicht mehr:



    Die "Buttons" für die Aktivierungen der Checks scheinen funktionslos zu sein und lösen nichts aus.


    Wenn ich das Script manuell in der Shell aufrufe erhalte ich diesen Output.


    Eventuell hat also der Check ob diese Funktionen überprüft werden können einen Bug. Wenn ich dazukomme versuch ich mal das Problem genauer einzugrenzen.


    Omar

  • Merkwürdig, ich gae die QPKGs installiert und die Abfragen funktionieren
    und der Status wird bei mir auch richtig wiedergegeben.
    Wie hast du pyLoad installiert, ist es in der /etc/config/qpkg.conf eingetragen ?
    Dort entnehme ich die ganzen Pfade zu den QPKGs.

  • Hallo,


    Bei pyLoad war es definitiv ein falscher Eintrag in der wait4pc.conf - es klappt jetzt! Wahrscheinlich hat die 1.5.0.1 einen falschen Wert geschrieben.
    Die einzige "Einschränkung" sind noch Fehlermeldungen beim direkten Aufruf des Scripts und dass der Status offenbar zweimal überprüft wird:


    Code
    No downloads running./sbin/write_log: /root/.pyload/opt/lib/libcrypto.so.0.9.8: no version information available (required by /usr/lib/libuLinux_config.so.0)log_tool: /root/.pyload/opt/lib/libcrypto.so.0.9.8: no version information available (required by /usr/lib/libuLinux_config.so.0)No downloads running./sbin/setcfg: /root/.pyload/opt/lib/libcrypto.so.0.9.8: no version information available (required by /usr/lib/libuLinux_config.so.0)/sbin/setcfg: /root/.pyload/opt/lib/libcrypto.so.0.9.8: no version information available (required by /usr/lib/libuLinux_config.so.0)


    Wenn Downloads laufen werden diese ebenfalls zweimal angezeigt.


    Bei Twonky und Squeezebox ist mir das Zurücksetzen der Konfiguration noch nicht gelungen - da spiel ich mich noch ein bisschen ... 8-)


    Omar



    ---Edit---



    Nachtrag:


    Wenn ich in der Squeezebox-Funktion "func_get_app_squeezebox" die Variable QPKG_SSOTS_DIR abfrage erhalte ich ein "N":

    Code
    QPKG_SSOTS_DIR=`${CMD_GETCFG} "SSOTS" Install_Path -f ${SYS_QPKG_CONFIG_FILE} -d N`echo ${QPKG_SSOTS_DIR}


    Meine Shell-Kenntnisse reichen aber nur soweit aus um zu verstehen dass der Pfad für das Squeezebox-QPKG nicht ermittelt werden kann ... Ich such aber weiter ... ;)


    Omar


    Nachtrag 2:
    Mit Trial & Error kommt man auch weiter ... :D
    /sbin/getcfg "SSOTS" Install_Path -f "/etc/config/qpkg.conf" liefert KEIN Ergebnis - klar, es gibt bei mir auch keine [SSOTS]-Sektion in der QPKG-Config.


    /sbin/getcfg "LogitechMediaServer" Install_Path -f "/etc/config/qpkg.conf" liefert hingegen sehr wohl ein Ergebnis:
    /share/MD0_DATA/.qpkg/LogitechMediaServer


    Ich habe also die Funktion "func_get_app_squeezebox" in lib.sh geändert und statt auf SSOTS auf "LogitechMediaServer" geändert - und siehe da alles funktioniert wie gewünscht.


    Der Grund ist möglicherweise die Umbenennung des QPKGs durch Logitech - früher hieß die Funktion eben anders ...


    Nachtrag 3: Die Konsequenz könnte aber dennoch etwas unangenehm sein - je nach eingesetzter Serverversion (ich glaube seit 7.7 heißt der ehemalige Squeezebox-Server Logitech-Mediaserver) müsste die Abfrage anders sein.


    Bei Twonky muss ich noch suchen - aber auch da könnte es an der Version liegen - ich hab die relativ neue 7.0.9!



    ---Edit---



    Noch ein Nachtrag (der Übersichtlichkeit halber in einen neuen Beitrag ;) :(


    Der Twonky-Server kann offensichtlich auf 2 verschiedene Arten eingerichtet / genutzt werden. Einmal über eine in die Firmware "eingebaute" Version (im NAS-Menü unter Anwendungen - UPnP-Medienserver zu finden) und einmal als QPKG. Ich nutze die QPKG-Variante. Deshalb ist bei mir auch in /etc/config/uLinux.conf in der Twonky-Sektion folgendes zu finden:


    Code
    [TwonkyMedia]Enable = FALSEWeb Enable = FALSE


    In /etc/config/qpkg.conf schaut's schon besser aus ;):


    Code
    [TwonkyMedia]Name = TwonkyMediaVersion = 7.0.9Enable = TRUEQPKG_File = TwonkyMedia.qpkgDate = 2012-11-16Shell = /share/MD0_DATA/.qpkg/TwonkyMedia/twonkymedia6.shInstall_Path = /share/MD0_DATA/.qpkg/TwonkyMediaWeb_Port = 9000WebUI = /Pid_File = /tmp/mediaserver.pidAuthor = QNAP Systems, Inc.


    Ich hab jetzt mal die Überprüfung in lib.sh (func_get_app_twonkymedia) von


    Code
    bAppTWONKYMEDIA=`${CMD_GETCFG} TwonkyMedia Enable -f ${CONF_ULINUX} -d FALSE`


    auf


    Code
    bAppTWONKYMEDIA=`${CMD_GETCFG} TwonkyMedia Enable -f ${SYS_QPKG_CONFIG_FILE} -d FALSE`


    geändert - und auch das funktioniert!


    Also auch hier die Schwierigkeit, dass das Script prüfen müsste, welche Variante vorhanden ist ...


    Könnte ev. so funktionieren (als Pseudo-Code)

    Code
    check Twonky in CONF_ULINUX
    if false
      check Twonky in SYS_QPKG_CONFIG_FILE
      if false
        set twonky = false
        exit
      fi
    fi
    set twonky = true


    Omar

    Einmal editiert, zuletzt von bladekiller () aus folgendem Grund: Editierfunktion nutzen und doppelte Beiträge vermeiden, siehe Forenregeln!

  • Hi
    Erstmal super Arbeit :thumb:
    Kleine Frage am Rande.. wäre es dir denn möglich das Skript so abzuändern, dass nur die Festplatte auf Standby/ Spindown geht und nicht die ganze NAS runterfährt? Vielleicht kannst du ja in deine WEB Oberfläche einen Schalter einbauen wo man dann wählen kann..
    Die Platte sollte aber dann auch aus bleiben und nicht wieder erweckt werden durch irgendwelche Dienste es sei denn jemand hat sich auf der NAS eingeloggt.. vielleicht könnte dein Skript dann die nicht nötigen Dienste ausschalten..
    Wäre das denn möglich?
    Sorry wenn das etwas offtopic is..
    Nochmals gute Arbeit und weiter so :D

  • Zitat von "jaydee81"

    Erstmal super Arbeit


    Danke dir :oops:


    Zitat von "jaydee81"

    dass nur die Festplatte auf Standby/ Spindown geht und nicht die ganze NAS runterfährt?


    Wenn der Befehl "hdparm -y /dev/sdx" dafür zuständig ist, könnte ich es mit einbinden,
    dass man die Wahl zwischen Shutdown und HD-Standby hat.
    Da müßte dann mal schauen, wie man am einfachsten die eingebauten Festplatten ermitteln kann.
    (df, storage.conf, usw. ) ?


    Zitat von "jaydee81"

    vielleicht könnte dein Skript dann die nicht nötigen Dienste ausschalten..


    Wer startet dann die Dienste, wenn diese wieder benötigt werden ?


    Was ich schon seit längerem in Planung hatte,
    dass man ein (Windows-)PCs mit einem HTTP-Aufruf am Wait4PC beim Systemstart "anmelden" und beim Herunterfahren "abmelden" kann.
    Es wäre eine Alternative zum Ping.


    Diese Möglichkeit ist schon teilweise in das QPKG eingebaut und somit noch nicht 100% funktionsfähig.



    Woran ich auch noch gedacht hatte,
    das man sofort sieht, wenn mehrere Intervalle eingerichtet sind,
    welcher Intervall gerade aktiv ist.

  • Zitat

    Wer startet dann die Dienste, wenn diese wieder benötigt werden ?


    Hmm gute Frage.. vielleicht durch einen Befehl von deinem Script ;) Die Platte bleibt sicherlich nicht aus solange einige Dienste laufen.. Könnte man nicht duch dein Script Dienste beenden solange kein PC eingeloggt ist und sobald einer einloggt wieder die Dienste starten.. also nur die Dienste die den HD Standby verhindern..

  • Ein schönes Programm, so etwas hatte ich schon lange gesucht. funktioniert super. Schön wäre es, wenn noch RTPR SYNC und Pyload integriert wären oder ist das technisch nicht möglich?


    Was bedeutet bei Crontab eigentlich */5 anstatt nur 5?


    Danke :)

  • Zitat von "topversand"

    und Pyload integriert wären


    pyLoad wird in der nächsten Version vorhanden sein.


    Bei RTRR kann ich es nicht sagen, da müßte ich wissen welches Programm dabei läuft bzw. gestartet wird.


    Zitat von "topversand"

    Was bedeutet bei Crontab eigentlich */5 anstatt nur 5?


    */5 bedeutet, das es alle 5 Minuten ausgeführt wird
    bei 5 wird das Script nur 5 Minuten nach der vollen Stunde, also zB. 18:05 ausgeführt

  • Erst einmal vielen Dank für das Script. Hatte ne ganze Weile so etwas gesucht. Meine Frage dazu - Wie kann man Plex noch integrieren?

  • Zu Plex müßte ich wissen, wie man über die Konsole (als Script) eine bestehende Verbindung von einem Client ermitteln kann.
    Alles weitere ist für mich kein Problem.

  • Gute Frage...Leider hab ich keine Ahnung davon. ;) Kann man überhaupt eine Verbindung ermitteln oder könnte man evtl. auch den Prozess ermitteln?