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 -
@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. -
@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). -
@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')