Programm aus dem Browser starten

  • Hallo zusammen,

    ich lasse meinen Raspi im "Kioskmode" laufen. ich fahre ihn hoch und er zeigt eine Weboberfläche im Vollbildmodus. Über eine PHP-Seite kann ich desweiteren die GPIOs schalten.

    Nun will ich das ganze erweitern. Unzwar möchte ich ein Programm durch drücken eines Buttons öffnen. Es handelt sich um eine Kalibrierungssoftware für das angeschlossene Touchpanel.

    Ich habe versucht dieses Programm einfach in den ordner var/www zu kopieren und dann einfach über die ip+pfad aufzurufen wie einen normalen Hyperlink. Das klappt aber so einfach nicht. Ich kann mir vorstellen das ich ein script hinterlegen muss welches dann das Programm startet. Nur wie stelle ich sowas an? Hat einer eine idee bzw. einen Ansatz? Google hat mir bisher nicht geholfen.

  • Grundsätzlich würde es über einen shell befehl funktionieren. Jedoch ist es nicht nötig das ich es als sudo ausführe.

    An sich ist das aber schonmal ein guter Ansatz, danke!

  • Ich habe gemäß deiner Anleitung die Datei sudowebscript.sh erstellt. In dieser rufe ich den Pfad von dem zu startenden Pogramm auf.

    #! /bin/sh

    var/www/xinput/src/xinput_calibrator
    exit 0


    Hab es unter sudoers entsprechend eingetragen(ganz unten) :

    www-data ALL=NOPASSWORD:/var/sudowebscript.sh

    rufe es über php auf: exec("bash /var/sudowebscript.sh")

    Es passiert nichts. Wenn ich das script über die Konsole aufrufe startet es direkt ohne umwege das Programm. Muss ich sonst noch irgendetwas machen?
    Habe die Datei über chmod +x ausführbar gemacht.

    So langsam gehen mir die ideen aus.

    Ich schalte bereits die GPIO's das funktioniert übrigens problemlos.

  • Moin!

    Ich tippe mal, es handelt sich um grafisches Programm, welches einen X-Server braucht, das Du da starten willst, oder?

    Wenn es so ist, dann muesste der WebServer-Prozesss wissen in welcher X-Session er es ausfuehren soll. Ich glaube Du solltest ehr versuchen das Program ueber den Client, Web-Browser zu starten.... Der andere Weg mach fuer kleine Abfragen wie z.B. Sensoren abfragen OK sein, aber das ein WebServer ein grafisches Programm startet halte ich fuer ein komisches Design.

  • Hi,

    ja genau es handelt sich um ein grafisches Programm zur Kalibrierung des Touchscreens. Ich starte es direkt über den Raspberry über den Midori Browser. Ich versteh nicht ganz? Wie meinst du das über welchen Client? Ich hab sowieso nicht vor das Programm von Außen zu starten.

    Ich denke der Fehler liegt woanders. Hab gerade in die sudowebscript.sh folendes geschrieben:

    #! /bin/sh

    sudo reboot
    exit0

    Und wenn ich dann wieder über php das sudowebscipt.sh aufrufe passiert nichts. In der Konsole hingegen macht er - wie er soll - einen Neustart.

    Einmal editiert, zuletzt von Rokx (12. November 2013 um 12:57)

  • Also der WebServer laeuft als Daemon im Hintergrund und laeuft mit seinen Userrechten. Soweit so gut. Er kann aber keine Program ausfuehren, fuer das einen Grafisches Interface benoetigt wird. Der Server hat keine Ahnung von einem X-Server. Er startet den Prozess in seinem Context und dort gibt es halt keine grafische Ausgabe.

    Also selbst wenn Du Dein Problem mit dem Skript starten in den Griff bekommst, wird Dir es mit grosser Wahrscheinlichkeit nicht gelingen das Kalibrierungsprogramm aus dem WebServer-Context (alle PHP-Skripte laufen dort) zu starten.

    Mit Client war der Browser gemeint. Der laeuft eben schon im Context des Users und hat damit ja auch schon einen X-Server. Wenn er das Programm starten koennte, dann wird es gehen. Wie Du aber das mit HTML und Javascript auf der Client-Seite hinbekommst weiss ich auch. Dafuer fehlt mir das Wissen.

    Ich hoffe aber, Du hast verstanden was ich meine.


  • Also selbst wenn Du Dein Problem mit dem Skript starten in den Griff bekommst, wird Dir es mit grosser Wahrscheinlichkeit nicht gelingen das Kalibrierungsprogramm aus dem WebServer-Context (alle PHP-Skripte laufen dort) zu starten.

    Es würde denk ich reichen das Programm über sudo zu starten - und dann eben entsprechend wie es beim sudowebscript beschrieben steht dem www-data das Recht zu geben das sudowebscript.sh ohne Password Abfrage auszuführen..
    Wenn das sudowebscript.sh mit sudo ausgeführt wird, werden alle Befehle in dem Script bereits mit root Rechten ausgeführt - es muss also nicht nochmals "sudo" in dem Script genutzt werden

    Wenn der X-Server (LXDE) bereits läuft, sollte das Programm dann auch ausuzführen gehen - zum Beispiel in dem man das Desktop-Symbol ausführt (die Datei ist (oder sollte) ausführbar (sein))

  • Hallo,
    auch wenn der Post schon etwas zurück liegt, würde ich mich gern hier einklinken.
    Ich habe einen Webserver, der eine Website zur Verfügung stellt, mit der ich meine Haussteuerung betreibe.
    Sprich eine Visualisierung. Nun habe ich einen 20" Touchscreen an dem ein Raspi hängt, der die Website bereitstellt.

    So, nun endlich zu meiner Frage....
    Wie kann ich den Raspi per PHP Befehl neustarten ?
    Das ganze läuft nur im LAN und ist von Aussen nicht erreichbar.
    Der Raspi hat keinen Webserver! Der wird von dem anderen Rechner gestellt!

    Mein erster Versuch sah so aus, mittels "pfsockopen" und fputs ein Bash-Script zu starten,
    klappt aber nicht.

    Dann habe ich was von "sudowebscript.sh" gelesen, aber versteh das gerade nicht...
    Gibt es da irgendwo eine Anleitung?

    Kann mir jemand Helfen ?

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!