Raspberry Pi 3 mit Raspbian: Shell aus HTML heraus ausführen (PHP)

Hallo Community,

Es ist ein oft diskutiertes Thema. Habe mich auch schon durch sämtliche Foren und Anleitungen durchgewühlt, leider bisher ohne Erfolg.

Habe neuerdings einen Raspberry Pi 3. Die Einrichtung hat soweit alles gut geklappt.
Nun will ich meinen Homeserver per Shell-Skript von einer HTML-Seite heraus mit PHP-Code starten.
Das Skript über die Kommandozeile aufgerufen funktioniert einwandfrei, der Server startet (per Etherwake).
Die HTML-Seite sieht folgendes vor: Mit Klick auf einen Link soll die Shell zum starten des Servers ausgeführt werden.
Der Quelltext der HTML-Seite sieht folgendermaßen aus:

<html>
<head>
<title></title>
<meta name="" content="">
</head>
<body>
<h1>Herzlich Willkommen<br/></h1>
<a href="?id=4.1" target="_self">Homeserver starten</a>
</body>

<?php
if (isset($_GET["id"])) {
$id = $_GET["id"];
if($id == "4.1") {
shell_exec(sudo /var/www/html/startHomeServer.sh);
}
?>

</html>

Die Dateien liegen alle in einem Pfad: „/var/www/html/“.

Die Rechte der Dateien sind folgende:

4 -rwxr-xr-x 1 www-data pi   324 Jan  7 11:16 index.html
4 -rwxrwxrwx 1 root     root  41 Jan  7 10:25 startHomeServer.sh

Ebenfalls habe ich einen Eintrag in sudoers hinterlegt:

www-data ALL=NOPASSWD:/var/www/html/startHomeServer.sh

Leider ist bisher alles ohne Erfolg gekrönt.

Könnt Ihr mir helfen meinen Fehler zu finden?

Viele Grüße
kleinerkaktus

Hallo,

ein shell_exec Kommando muss in Anführungsstriche, also ‚foobar.sh‘ oder „foobar.sh“.

Gruß,
Steve

Hallo Steve,

danke für die schnelle Antwort. Habe es jetzt eben mal getestet und sogar noch einen Klammersetzfehler im PHP-Teil entdeckt. Leider funktioniert es mit den ’ und den " auch nicht.

Hier jetzt nochmal der aktualisierte Quellcode mit den einfachen ’ :

<html>
<head>
<title></title>
<meta name="" content="">
</head>
<body>
<h1>Herzlich Willkommen<br/></h1>
<a href="?id=4.1" target="_self">Homeserver starten</a>
</body>

<?php
if (isset($_GET["id"])) {
$id = $_GET["id"];
if($id == "4.1") {
shell_exec('sudo /var/www/html/startHomeServer.sh');
}
}
?>

Hoffe Ihr habt mir noch weitere Vorschläge!

Viele Grüße
kleinerkaktus

Was sagt denn das Webserver Log dazu?

Gruß,
Steve

Hi, also der sagt folgendes dazu:

[mpm_prefork:notice] [pid 688] AH00163: Apache/2.4.10 (Raspbian) configured -- resuming normal operations
[core:notice] [pid 688] AH00094: Command line: '/usr/sbin/apache2'

Werde ich leider nicht wirklich schlau draus! :stuck_out_tongue_closed_eyes: