NEWS

Python Script wird wird nur teilweise ausgeführt


  • Hi,
    ich nutze ioBroker erfolgreich in einem Dockercontainer und wollte jetzt ein Pythonskript laufen lassen, um mich auf meiner DynDns Seite afraid.org regelmäßg einzuloggen (da sonst der Account gesperrt wird).
    Skript dafür habe hier gefunden: Github Link
    In der shell von ioBroker funktioniert das super.
    Gekapselt habe ich das alles in einem Skript autologin.sh:

    python /opt/iobroker/autologin/afraid-autologin/autologin.py --browser phantomjs > /tmp/output_afraid_autologin
    

    Output bei Aufruf des Scriptes in der Shell:

    2019-11-17 12:34:17,430 >>> DEBUG: afraid-autologin startup
    2019-11-17 12:34:17,433 >>> DEBUG: init browser
    2019-11-17 12:34:20,668 >>> DEBUG: navigating to login page
    2019-11-17 12:34:24,459 >>> DEBUG: submit login form
    2019-11-17 12:34:29,646 >>> DEBUG: extending account if dormant
    2019-11-17 12:34:30,481 >>> DEBUG: [<selenium.webdriver.remote.webelement.WebElement (session="311bea00-092e-11ea-9e1f-b5ec6b3fdb3e", element=":wdc:1573990470479")>]
    Trace
    2019-11-17 12:34:34,407 >>> INFO: login sucessful
    

    Output, wenn ich es mit dem exec-Befehl über ein Skript laufen lasse (exec('/opt/iobroker/autologin/afraid-autologin/autologin.sh');):

    2019-11-17 12:48:00,217 >>> DEBUG: afraid-autologin startup
    2019-11-17 12:48:00,220 >>> DEBUG: init browser
    

    Warum auch immer scheint das Skript relativ flott abgebrochen zu werden.

    Hat jemand eine Idee, was ich falsch mache?
    Danke
    Christof

  • Developer

    @Christof-Kac Warum unterscheidet sich dein Aufruf über exec und CLI. z. B. hast du auf der CLI phantomjs als Browser spezifiziert.
    Entsprechend wird hier ein anderer Zweig gewählt (https://github.com/inderpreet99/afraid-autologin/blob/master/autologin.py#L64) als über dein Exec Aufruf, und das Logging danach kommt auch nicht mehr, da was net geklappt hat. Er versucht wohl ansonsten Firefox zu nehmen. Phatnomjs ist ein Headless Browser, während FF dies nur ist, wenn er explizit in diesen Modus versetzt wird. Villt ist auch gar kein FF installiert. However, spezifiziere wieder Phantomjs und es sollte klappen.

    Edit: habe es etwas missverstanden. Warum der Umweg über das Shell Skript? Du kannst doch exec('python /opt/iobroker/autologin/afraid-autologin/autologin.py --browser phantomjs > /tmp/output_afraid_autologin') direkt aus ioBroker abfeuern. Wenn das noch unterschiedliche Ergebnisse liefert als der direkte Aufruf via CLI, werden es wohl Rechte-Geschichten sein.

  • Developer

    @Christof-Kac sagte in Python Script wird wird nur teilweise ausgeführt:

    Warum auch immer scheint das Skript relativ flott abgebrochen zu werden.

    Sofern die Befehlszeile richtig ist, nutze den Callback von exec. exec ist asynchron, d.h. der restliche Code danach wird sofort ausgeführt. Nur im Callback kannst du sicher sein, dass der Befehl ausgeführt wurde (mit oder ohne Fehler).

  • Developer

    @AlCalzone Er lässt es sich ja in eine Datei loggen. Btw. @Christof-Kac leite doch mal stderr mit in die Datei, wird hilfreich sein. Also exec('python /opt/iobroker/autologin/afraid-autologin/autologin.py --browser phantomjs &> /tmp/output_afraid_autologin')

Suggested Topics

2.4k
Online

35.3k
Users

41.2k
Topics

567.1k
Posts