Willkommen! Melden Sie sich an oder registrieren Sie sich.

Um schreiben oder kommentieren zu können, benötigen Sie ein Benutzerkonto.

Anmelden - oder - Benutzerkonto erstellen

Beiträge von Fred Bogus Trumper

    busybox-cron ist seit fast einem Jahrzent buggy ...

    (busybox-)cron ist eines der Stiefkinder im experimental Image. DP hat es im auch DreamOS nicht geschafft, cron anständig zu implementieren - ein paar strings funktionieren nicht ...



    busybox-cron wird per init.d startscripit im DreamOS gestartet


    /etc/init.d/busybox-cron start



    damit es auch beim bootup gestartet wird, einmalig nach dem flashen folgenden Befehl ausführen:


    update-rc.d busybox-cron defaults


    dann mal rebooten und gucken ob es klappt ...

    Das vollwertige wget binary kann auch https. Die Herausforderung liegt darin, dass es auch im OE2.0 mit aktivierten Sicherheitseinstellungen funktionieren soll. Ich kann mich einfach nicht von den treuen, alten und nicht tot zu bringenden OE2.0 Boxen trennen ... :D



    Aber ich habe es mit wget auch nicht hinbekommen, da scheiterte es schon beim holen der sessionid


    Aber für OE2.0 gibt es auch curl - ich hab' nie danach gesucht ...

    Code
    1. root@dm7020hd:~# SESSIONID=`curl -s -X POST "localhost/web/session" |grep -o -E "<e2sessionid>(.*)</e2sessionid>" |sed "s|.*<e2sessionid>\(.*\)</e2sessionid>.*|\\1|"`
    2. root@dm7020hd:~# curl -X POST "http://localhost/web/message?text=hallo&type=1&timeout=5&sessionid=$SESSIONID"
    3. <?xml version="1.0" encoding="UTF-8"?>
    4. <e2simplexmlresult>
    5. <e2state>True</e2state>
    6. <e2statetext>Message sent successfully!</e2statetext>
    7. </e2simplexmlresult>
    8. root@dm7020hd:~#


    damit hat sich das für mich mit wget auch erledigt

    ja, das klappt auch ohne user pass


    Code
    1. root@dm900:~# SESSIONID=`curl -s -X POST "localhost/web/session" |grep -o -E "<e2sessionid>(.*)</e2sessionid>" |sed "s|.*<e2sessionid>\(.*\)</e2sessionid>.*|\\1|"`
    2. root@dm900:~# curl -X POST "http://localhost/web/message?text=hallo&type=1&timeout=5&sessionid=$SESSIONID"
    3. <?xml version="1.0" encoding="UTF-8"?>
    4. <e2simplexmlresult>
    5. <e2state>True</e2state>
    6. <e2statetext>Die Nachricht wurde erfolgreich gesendet!</e2statetext>
    7. </e2simplexmlresult>
    8. root@dm900:~#


    Mal sehen ob ich das auch mit wget hinbekomme, sonst müsste all meine scripte komplett auf curl umstellen, wobei - die Arbeit hätte ich mit wget auch.


    Und ob man nun curl oder wget nachinstalliert ist eigentlich auch egal, mit dem kastrierten busybox-wget out of the box klappt es sowieso nicht


    Danke noch mal für den Tipp mit curl

    danke, mit curl klappt das wie beschrieben.


    An curl hatte ich gar ehrlich gesagt gar nicht gedacht, weil es das bis DreamOS gar nicht auf den Boxen gab - oder ich hab's übersehen.


    Mit einem vollwertigem wget binary müsste es aber auch klappen - tut es aber (noch) nicht. Im Grunde gibs't du ja nur die sessionid mit, was im übrigen die Eingangsfrage beantwortet.


    Ich vermute, dass ich da noch einen Fehler in der Syntax mit wget habe.

    Wenn man mit wget in shell script Webinterface commands ausführen will, muss man die Anti-Hijack und/oder die Token-basierte Sicherheit in den Webinterface Einstellungen deaktivieren, damit es funktionert.

    Es muss ja auch möglich sein mit einem vollwertigem wget binary mit --post-data oder --post-file die sessionid etc. mitzugeben, damit man die Sicherheitseinstellungen nicht deaktivieren muss. Ich habe mir mal die connectors.py im Partnerbox plugin angesehen. Die sessionid bekomme ich über wget raus, die cookies kann ich auch speichern, wobei im cookie-file dann nicht allzuviel gespeichert wird. Aber was muss man bei einem Webinterface command über POST mitsenden, damit das funktioniert?


    user

    pass

    sessionid


    Ich bin aus dem code in der connectors.py nicht ganz schlau geworden, was in welchem format gesendet werden muss. Vielleicht könnte mir jemand auf die Sprünge helfen, wie ich den header mit übergebe bzw. wie ich den über wget rausfinde


    connectors.py

    Code
    1. headers = {
    2. "Authorization": authHeader,
    3. 'content-type':'application/x-www-form-urlencoded',
    4. }


    Wie sieht den POST im Rohformat aus, wenn das über Partnerbox gesendet wird?

    das Script funktioniert auch so im OE2.5, du muss nur die Web-IF Sicherheitseinstellungen deaktivieren


    Menü - Einstellungen - Netzwerk - Webinterface


    Anti-Hijack Maßnahmen und Token-basierte Sicherheit ausschalten, dann sollte es klappen



    wenn du das script so manuell ausführst: sh -x /path/to/script.sh


    wird dir das Ergebnis jeder Zeile ausgegeben, dann sieht man auch den Fehler, wenn die Sicherheitseinstellungen aktiviert sind:

    Code
    1. wget: server returned error: HTTP/1.1 412 Precondition Failed


    an sich funktioniert dein script so ohne Änderungen im auch im OE2.5, aber ich hab' mir erlaubt deinen Code "aufzuräumen" - so sparst du dir das schreiben der wget Abfragen in ein file ...


    musst du aber nicht übernehmen

    weniger aufwändig: man lässt über einen systemd timer den dienst etwas verzögert starten bis die 1. Last mal abgeflaut ist


    /lib/systemd/system/dienst.timer

    Code
    1. [Unit]
    2. Description=Run service on bootup
    3. [Timer]
    4. OnStartupSec=10s
    5. Unit=dienst.service
    6. [Install]
    7. WantedBy=multi-user.target


    das dienst.service muss dann disabled werden, das wird dann vom dienst.timer gestartet


    systemcrl {start|stop|restart|status} dienst.service


    funktioniert dann wie gehabt, je nachdem wie das service aussieht



    wenn der dienst über ein script gestartet wird, kann man einen restart nach x Sekunden in die /etc/rc.local einbauen oder gleich verzögert starten

    /etc/rc.local

    Shell-Script
    1. #!/bin/bash
    2. dienst_restart () {
    3. sleep 10
    4. /usr/script/dienst.sh restart
    5. }
    6. dienst_restart &
    7. exit 0

    wobei die option für den restart im Merlin wohl anders lautet ..

    für eigene aliases habt ihr doch die /root/.user_aliases eingebaut ;)

    die ist dann auch update sicher


    statt re-login einfach die /root/.profile oder gleich die /root/.user_aliases neu einlesen, dann ist der neue alias in der aktuellen shell sofort verfügbar und man sieht auch gleich eine Fehlermeldung wenn die syntax nicht passt


    . /root/.user_aliases

    bau doch einen Watchdog ein, der nach dem boot prüft, ob der Dienst läuft, wenn nicht restarten


    du könntest auch versuchen, den Dienst mit einer Zusatzoption starten zu lassen, welche bei einem segmentation fault den dienst automatisch neu startet (wenn noch nicht gesetzt)


    dienst --help|grep -B 3 "restart on segfaults."


    könnte weiterhelfen, aber die Info liegt wahrscheinlich schon ausserhalb der "Toleranzgrenze" in diesem Board ( mod : sorry wenn überschritten ...)

    Über die GUI wäre es einfacher - obwohl ich ein Freund des CLI bin ...


    ST504321897.. aushängen

    /dev/sda1 nach /media/hdd manuell einhängen und "automatisch einhängen" aktivieren

    Speichern


    /media/hdd als Standard Gerät in den Aufnahmepfaden einstellen

    /media/hdd/movie als Standard Aufnahme und Timeshift Verzeichnis auswählen


    Speichern und GUI oder Box neu starten


    Dann sollten die enigma2 settings wie config.storage.xy neu geschrieben und die fstab angepasst werden