Zum Inhalt springen

[Tutorial] Raspberry über Webinterface steuern – Shellskripte ausführen

Quelle: http://www.forum-raspberrypi.de/Thread-tutorial-raspberry-ueber-webinterface-steuern-shellskripte-ausfuehren

Hallo,

hier möchte ich eine Möglichkeit aufzeigen, bequem über ein Webinterface Shellskripte auszuführen.

Zuerst wird ein Webserver mit PHP installiert:

sudo apt-get install lighttpd
sudo apt-get install php5-common php5-cgi php5
sudo lighty-enable-mod fastcgi-php
sudo service lighttpd force-reload

Außerdem müssen die Rechte für den Benutzer www-data angepasst werden:

sudo chown www-data:www-data /var/www
sudo chmod 775 /var/www
sudo usermod -a -G www-data pi

Um in den Skripten Befehle als Root ausführen zu können, kann z.B der Benutzer www-data in die /etc/sudoers eingetragen werden:

sudo visudo

Am Ende einfügen:

www-data ALL=(ALL) NOPASSWD: ALL

Speichern mit Strg+X , Y, Enter.
Wenn der Webserver öffentlich im Netz verfügbar gemacht wird, stellt dies eine Sicherheitslücke dar.
Die Forensuche nach sudo webscript hilft dann weiter.

Als nächstes wird die Datei/var/www/index.php erstellt:

sudo touch /var/www/index.php

In dieser Datei findet fortan die Konfiguration des Webinterfaces statt.

Beispielhaft hier ein Webinterface mit 3 Buttons:

<?php
if (isset($_POST['Skript1'])) { shell_exec("sudo bash /var/www/skript1.sh"); }

if (isset($_POST['Skript2'])) { shell_exec("sudo bash /var/www/skript2.sh"); }

if (isset($_POST['Skript3'])) { shell_exec("sudo bash /var/www/skript3.sh"); }
?>

<!DOCTYPE HTML >
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Raspberry Pi</title>
<style type="text/css">

body    {
background-color:#000000;
color: white;
}

.style      {
text-align:center;
font-size:60px;
font-family:"Verdana";
}

.Button     {
width:760px;
height:220px;
color:black;
background-color:#FAFAFA;
border-radius:80px;
font-size:45px;
}

</style>
</head>
<body>
<nobr>
<b>

<form action="" method="post">

<div class="style">
<br>
<button class="Button" type="submit" name="Skript1">Skript 1 Klick</button>
</div>

<div class="style">
<br>
<button class="Button" type="submit" name="Skript2">Skript 2 Klick</button>
</div>

<div class="style">
<br>
<button class="Button" type="submit" name="Skript3">Skript 3 Klick</button>
</div>

</form>
</nobr>
</b>
</body>
</html>

Erklärung:

if (isset($_POST['Skript1'])) { shell_exec("sudo bash /var/www/skript1.sh"); }

Der Button mit der Bezeichnung Skript1 führt das Skript /var/www/skript1.sh aus.
Dazu muss das Skript /var/www/skript1.sh ausführbar sein:

sudo chmod +x /var/www/skript1.sh

Erwähnenswert:
Es kann vorkommen, dass das Webinterface stehen bleibt. Abhilfe schafft, im Shellskript die Ausgaben der Befehle umzuleiten:

befehl > /dev/null 2>&1 &