Seite 1 von 2

Python Script über Webbrowser

Verfasst: Samstag 2. Juni 2018, 13:47
von Juzu
Moin,
ich versuche ein Python Script, das eine kamera auslößt, das Bild herunterlädt und auf der Kamera löscht, über den Webbrowser des Pi's zu starten. Wenn ich das Script ganz normal über

Code: Alles auswählen

sudo python script.py
starte, funktioniert alles. Als ich jetzt aber probiert habe über eine php datei das Script zu starten

Code: Alles auswählen

system("sudo python script.py")
, lädt er die Bilder nicht herunter und nach 5 Bildern ist die Kamera Busy. Das alles funktioniert einwandfrei wenn ich es nicht über das php Script mache. Ich muss es aber über den Browser starten.
Was könnte das Problem sein?
MFG

Re: Python Script über Webbrowser

Verfasst: Samstag 2. Juni 2018, 15:11
von Sirius3
Niemand muß etwas über PHP-Skripte machen. Ich habe z.B. seit über 10 Jahren kein PHP mehr ernsthaft verwendet. Warum muß das Programm über sudo gestartet werden? Stimmen die Verzeichnisse? Welche Fehlermeldungen gibt es?

Re: Python Script über Webbrowser

Verfasst: Samstag 2. Juni 2018, 16:28
von Juzu
Verzeichnisse passen. Fehlermeldungen gibts keine. Wenn ich die php Datei mit php in der Konsole ausführe, funktioniert es. Nur nicht über den Browser. In der php Datei ist auch ein Header angeben zur index.php. Das klappt aucht. Nur nicht der system Befehl.

Re: Python Script über Webbrowser

Verfasst: Samstag 2. Juni 2018, 17:25
von Juzu
Wie soll ich denn deiner Meinung nach ein Python Script mit einem Button auf einer Website ausführen?

Re: Python Script über Webbrowser

Verfasst: Samstag 2. Juni 2018, 19:01
von Sirius3
Nochmal die Frage: Warum muß das Programm über sudo gestartet werden?
Der Webserver läuft ja hoffentlich nicht als Nutzer, der sudo ausführen darf. Und da gibt es natürlich eine Fehlermeldung, man muß sie nur ausgeben.

Re: Python Script über Webbrowser

Verfasst: Samstag 2. Juni 2018, 19:09
von Juzu
Es muss nicht über sudo gestartet werden. Hautpsache es wird überhaupt gestartet.

Re: Python Script über Webbrowser

Verfasst: Samstag 2. Juni 2018, 19:10
von Juzu
Wie gebe ich die Fehlermeldung denn aus? Ich bin noch nicht so lange dabei, sorry.

Re: Python Script über Webbrowser

Verfasst: Samstag 2. Juni 2018, 19:24
von Juzu
Ich habe mit jetzt mit ini_set('error_reporting'. E_ALL); die Fehlermeldungen anzeigen lassen. Keine da.
Wenn ich das script mit php script.php ausgühre, alles wurderbar. Wenn ich es über den Browser aufrufe localhost/script.php (das script liegt im richtigen Ordner dafür), passiert nix, außer das ich auf einer weißen Seite lande.
Ich lasse in dem Php Script auch eine Datei schreiben. Das klappt auch einwandfrei.

Re: Python Script über Webbrowser

Verfasst: Samstag 2. Juni 2018, 19:26
von __deets__
Werd mal www-Data user (zb mit sudo su www-data) und führ DANN dein Python Skript aus.

Re: Python Script über Webbrowser

Verfasst: Samstag 2. Juni 2018, 19:44
von Juzu
Ohne sudo access to /dev/mem. try running as root!
Mit sudo gehts.

Re: Python Script über Webbrowser

Verfasst: Samstag 2. Juni 2018, 19:46
von __deets__
Das es ohne sudo geht ist nicht verwunderlich. Mit sudo hätte ich bei www-Data ein Passwort erwartet. Du musstest aber keines eingeben?

Re: Python Script über Webbrowser

Verfasst: Samstag 2. Juni 2018, 19:54
von Juzu
Nein, ich habe mich so angemeldet: sudo su -l www-data -s /bin/bash
Bei sudo su www-data wurde gesagt: thus account is currently not available.

Re: Python Script über Webbrowser

Verfasst: Samstag 2. Juni 2018, 19:57
von __deets__
Danach warst du www-Data? Das hat ‚id‘ zb ergeben? Und DANN geht dein Python Skript?

Re: Python Script über Webbrowser

Verfasst: Samstag 2. Juni 2018, 20:00
von Juzu
Die Eingabe sieht wie folgt aus:
www-data@raspberrypi:~/html$ sudo python script.py
Ja dann klappt es. Habe es auch mit einem 2. anderen Script probiert klappt auch.

Re: Python Script über Webbrowser

Verfasst: Samstag 2. Juni 2018, 20:07
von __deets__
Hm. Dann hab ich keine Idee mehr.

Re: Python Script über Webbrowser

Verfasst: Samstag 2. Juni 2018, 20:10
von Juzu
Sirius3 hat geschrieben: Samstag 2. Juni 2018, 15:11 Niemand muß etwas über PHP-Skripte machen.
Welche möglichkeit gibts denn ein Python Script mit einem Button zu starten?

Re: Python Script über Webbrowser

Verfasst: Samstag 2. Juni 2018, 20:12
von __deets__
Du kannst in deinem Python Skript einen Webserver starten, und den mit dem Browser ansteuern.

Beispiele gibt es da viele, zb mit bottle oder flask als webframework.

Re: Python Script über Webbrowser

Verfasst: Samstag 2. Juni 2018, 20:31
von Juzu
Gibt es auch eine andere Möglichketi? Ich habe nämlich noch ein paar andere Seiten auf dem Server auf denen man die Parameter eingibt usw. und ich würde das jetzt ungern alles nochmal abändern, es sei denn es gibt keine andere Methode.

Re: Python Script über Webbrowser

Verfasst: Samstag 2. Juni 2018, 20:48
von __deets__
Prinzipiell muss das gehen über PHP. Warum das jetzt nicht klappt kann ich so auch nicht sagen - ich bin nicht auf dem laufenden, was zB der Apache für Limitierungen an seine Prozesse anlegt. Und da muss es ja irgendwie dran liegen. Ich würde da nochmal tiefer in die Logs starren.

Das ganz generell ist dein Ansatz, per System zu arbeiten ziemlicher Mist. Denn damit bist du IMMER darauf angewiesen, dass der Browser rechtzeitig was macht. Wenn der Benutzer den Browser schließt, und dein Skript gerade die Turbine auf Vollgas gedreht hat, dann bleibt das so lange so, bis es kracht.

Darum ist es eh besser, das Skript dauerhaft laufen zu lassen, und damit zu kommunizieren. ZB per socket. Oder eben sogar HTTP. Es läuft also endlos, und bekommt per HTTP Befehle, was es tun soll. Ob die direkt aus dem Browser kommen, oder zb via PHP und CURL ist egal.

Aber so kannst du dann zb Timeouts ablaufen lassen, und die Turbine wieder abschalten. Oder auch nur die Plumpsklobeleuchtung. Eigentlich kommt fast nichts ohne Timer aus.

Re: Python Script über Webbrowser

Verfasst: Samstag 2. Juni 2018, 20:57
von Juzu
Ist es wirklich sinnvoll bzw. notwendig städig zu kommunizieren? Der Webserver soll nur die Daten in eine Datei speichern (klappt) und dann das script starten wenn ich den Knopf drück. Dann soll nur noch eine Seite mit script läuft angezigt werden was ich mit einer php abfrage in der index mache, indem ich eine Datei lese in der entweder running oder nix steht. Dann hat sich alles gegessen. Der Raspberry pi steht für ein paar Stunden irgendwo rum und macht eine Timelapse mit dem script. Fertig. "Mehr" solls nicht werden.