PHP shell_exec über dropdown-auswahlliste starten

::1

Banned
Registriert
Apr. 2002
Beiträge
4.786
hi,

ich habe einen raspberry pi und lasse da diverse dienste laufen... damit ich nicht immer über ssh an die beere muss um die dienste zu stoppen/starten, möchte ich das über eine dropdown-auswahlliste machen...

mein erster (stümperhafter) entwurf sieht so aus

PHP:
<html>
        <head>
                <title>beerensteurung</title>
        </head>
        <body>
                <form>
                        <select name="list">
                        <option select value="<?php shell_exec('sudo /etc/init.d/apache2 start'); ?>">start
                        <option select value="<?php shell_exec('sudo /etc/init.d/apache2 stop'); ?>">stop
                        </select>
                        <input type=button value="go" onClick="%hilfe%">
        </body>
</html>

bei dem %hilfe% weiß ich nicht was da hin muss bzw ich weiß gar nicht ob meine erste idee überhaupt so funktionieren kann... :( bin auch leider kein programmierer, das sind alles böhmische dörfer für mich ;)
 
Zuletzt bearbeitet:
Da ist aber einiges durcheinander bei dir. Dein shell_exec kannst du natürlich nicht direkt in HTML schreiben, das muss in PHP laufen, was wiederrum voraussetzt, dass auf deinem Raspberry Pi ein PHP-server läuft.

Schau mal hier:

http://www.html-form-guide.com/php-form/php-form-select.html

Die gewählte Option musst du dann in PHP auswerten und entsprechend shell_exec anstoßen.
 
Zuletzt bearbeitet:
habs gerade noch einmal überarbeitet und etwas mehr "ordnung" reingebracht ;)
 
geht noch einfacher und sicherer(auch wenns im lan ist aber man weiss ja nie...) nimmste einfach webmin ;)
So hab ich es bei meiner Pi =)
 
webmin scheint mir (noch) zu mächtig zu sein ;) im moment gehts nur um ne handvoll dienste...
 
einfach mal anschauen es lohnt sich ;)
 
Also morphium, du hast die Funktionsweise von PHP nicht ganz verstanden.
PHP liefert eine HTML-Seite aus (das Aufrufen der Seite).
Der Nutzer klickt auf ein Element.
Der Browser ruft eine weitere Seite auf (muss nicht die selbe sein).
PHP interpretiert die Daten, die durch der Klick übermittelt hast ($_POST, $_GET als Hinweis), und liefert wieder eine HTML-Seite aus.
etc.
Bei deinem Versuch hast du das Problem, dass du die Initialseite auslieferst und dort schon die Befehle aufrufst.
Vorschlag:
Code:
<?php
if($_POST["befehl1"]{...}
if($_POST["befehl2"]{...}
?><html>
<form method="post">
<input type="submit" name="befehl1" value="Befehl 1 ausführen">
</form>
<form method="post">
<input type="submit" name="befehl2" value="Befehl 2 ausführen">
</form>
</html>
 
Das Ding würde so oder so nicht funktionieren.
1.) Nur Root darf Daemons starten, stoppen, neustarten...
2.) PHP wird vom HTTP-Daemon ausgewertet und ausgeliefert. Selbiger "gehört" entweder (z.B. bei suPHP) einem "realen" User des Systems oder aber er gehört dem allgemeinen Webserver-User, meist www-data
3.) keiner dieser User sollte das Recht haben, sudo zu nutzen. Sudo ist ein rätselhaftes und mächtiges Instrument, dessen Einsatz in einigen Distributionen streng limitiert ist
4.) selbst wenn der User, z.B. www-data, sudo-Rechte hat, ein sudo ohne Passwort bringt genau NULL

Anstatt in völliger Unkenntnis der Sachlage an Sachen herum zu stümpern und dabei wahlweise deine Sicherheit komplett auf Null zu reduzieren oder aber gleich mal das System zu beschädigen solltest du einfach direkt auf bewährte Programme wie Webmin setzen. Die sind flexibel, stabil und sicher. Wenn sie etwas mehr können als du gerade brauchst... na und? Dein ganzes Betriebssystem kann mehr als du brauchst...
 
Daaron schrieb:
Anstatt in völliger Unkenntnis der Sachlage an Sachen herum zu stümpern und dabei wahlweise deine Sicherheit komplett auf Null zu reduzieren oder aber gleich mal das System zu beschädigen solltest du einfach direkt auf bewährte Programme wie Webmin setzen.

sowas nennt sich weiterbildung, probieren durch try&error, wie auch immer... die sicherheit auf dem system ist mir vollkommen egal, wird eh nur hier lokal im LAN betrieben :freak: und webmin kommt bestimmt, aber nicht jetzt...

@hancock
stimmt, php ist total fremd für mich ;) deswegen frage ich auch hier, nachdem google mir nicht weiterhelfen konnte :(
 
In der IT sollte man Versuch und Irrtum tunlichst vermeiden.
Ich hab dir ja n paar Ansätze gegeben, warum dein Plan so nicht ohne weiteres funktionieren kann.
 
in einem produktivsystem wird natürlich nicht mit try&error gearbeitet, in einer testumgebung jedoch schon... dafür ist das ding da!

ansonsten versuche ich es heute abend nochmal mit php...
 
kannst du lassen, es wird über PHP nicht oder nur mit extremer Verrenkung gehen. Du scheiterst spätestens daran, dass "sudo" ein Passwort will, dass du ja schlecht eingeben kannst. Wahrscheinlicher ist aber, dass www-data gar keine sudo-Rechte hat.
 
Zurück
Oben