Hallo Zusammen,
zu aller erst: ich bin komplett neu im Thema Linux. Sollte ich also einen Anfängerfehler machen und Ihr erkennt das sofort, so habe ich nichts dagegen, wenn Ihr einfach einen Artikel verlinkt, den ich durchforsten muss um mein Problem zu lösen.
Ganz kurz zur Vorgeschichte: Ich habe vor den Pi in eine Steuerung für ein Gerät zu verwandeln, welches dann flexibel eingesetzt werden kann. Der Pi dient dabei als Webserver mit einer kleinen Steuerungsoberfläche. Damit ich am Gerät kein Display brauche, möchte ich es so einrichten, dass man ihn per LAN an ein Netzwerk anschließt, dann per DNS-Name aufruft und über ein kleines Menü mit dem WLAN verbinden kann. Wie genau ich das bewerkstellige, muss ich noch überlegen. Momentan scheitere ich an dem Punkt die verfügbaren Netzwerke auf der Weboberfläche auszugeben.
Beim Aufruf der Seite, wird folgender PHP-Code ausgeführt:
<?php
shell_exec ('/var/www/html/scripts/wlan.sh');
$zitate = file_get_contents('wlan.txt');
echo nl2br($zitate);
?>
das Script sieht "wlan.sh" so aus:
iwlist scan &> /var/www/html/scripts/wlan.temp
grep ESSID /var/www/html/scripts/wlan.temp &> /var/www/html/php/wlan.txt
Wenn ich das Script selber ausführe (angemeldet als "pi", ohne sudo) funktioniert alles wie es soll: Das Ergebnis der Netzwerksuche wird in "wlan.temp" gespeichert und die jeweiligen Namen der Netzwerke werden in "wlan.txt" ausgegeben. Wenn ich das Script über die Seite mit dem PHP-Code ausführe, wird meine wlan.temp leer geräumt und dementsprechend ist die wlan.txt auch leer.
Ich dachte erst daran, dass es ein Berechtigungsproblem sei, daher habe ich probehalber allen alle rechte der beiden Textdateien gegeben. Bringt keinen unterschied.
Im Apache Log ist nach jedem Versuch das zu finden:
Das sind die ersten beiden Zeilen, wenn man den Befehl "iwlist scan" ausführt, ohne das Ergebnis in eine Datei umzuleiten. (Führt man das Script von Hand aus, werden auch diese Zeilen in die Datei umgeleitet). Darunter Kommt dann das ergebnis der WLANsuche, welches mich eigentlich interessiert und welches in "wlan.temp" geschrieben werden soll.
Hat jemand ne Idee woran das liegen kann? Gibt es vielleicht eine einfachere Variante, das ganze in die Tat umzusetzen? Ich kann ja nicht der erste sein, der sowas in der Art vor hat.
Meine bisherigen Recherchen haben leider nichts ergeben.
Wenn ich mich einfach nur Dumm anstelle, lasst es mich wissen. Ich bin bereit neues zu lernen.
Vielen Dank und viele Grüße,
Barnibas