ich versuche derzeit ein auf dem Raspi erstelltes Shell Script zu starten. Der Rückgabewert soll in IP-Symcon in eine Variable gestellt werden und von dort ausgelesen werden können.
Auf dem Raspi funktioniert der Aufruf einwandfrei mittels folgendem Befehl:
sudo bash lescan.sh 7C:2F:80:C4:6A:8D
Ich übergebe die MAC Adresse eines Beacon an das Script und dieses liefert eine „1“ zurück, wenn das Teil gefunden wird und eine „0“, wenn es nicht da ist.
Mit folgendem PHP Skript versuche ich das Shell Script aus IP-Symcon heraus zu starten:
<?
// Ausführung eines Linux-Shell-Scripts mittels "IPS_Execute"
$result = IPS_EXECUTE("/var/lib/symcon/scripts/lescan.sh","7C:2F:80:C4:6A:8D", true, false);
if ($result == 0) {
print "Der Befehl wurde erfolgreich ausgeführt.";
print "Der Befehl gab den Wert \"".$result."\" zurück.";
} else {
print "Der Befehl gab den Fehler \"".$result."\" zurück.";
}
?>
Ich habe den EIndruck, dass das Shell Script nicht aufgerufen wird. Selbst wenn der Beacon in Reichweite ist, kommt folgendes Ergebnis:
Der Befehl wurde erfolgreich ausgeführt.Der Befehl gab den Wert „“ zurück.
. Auch der Bluetooth Stick im Raspi, der immer kurz aufleuchtet, wenn ich das Shell Skript auf dem Raspi starte, leuchtet nicht.
Ich habe somit 2 Fragen:
Was ist in meinem PHP Skript noch zu ändern, damit der Aufruf des Shell Scripts funktionieren kann?
Wie kann ich den Rückgabewert aus dem Shell Script (1, oder 0) in eine IP-Symcon Variable schieben, um diese Variable dann abzufragen?
Hatte hier im Forum mal was bzgl Unterschied von „exec“ und „shell_exec“ geschrieben - danach kannst du mal suchen (kann ich am Handy grad schlecht) und dann hast du eine Lösung
Ich habe nach wie vor den Eindruck, dass das Shell Script auf dem Raspi so nicht ausgeführt wird. Kann es eventuell sein, dass es ein Berechtigungsproblem ist und der User mit dem IP-Symcon versucht das Script auf dem Raspi zu starten keine Berechtigung dafür hat? Mit welchem User greift IP-Symcon eigentlich auf das Shell Script zu?
IPS läuft als root - also sicher kein Berechtigungsproblem
Gibt das Skript auch was aus, wenn du es über SSH als root ausführst? Was wenn du die Ausgabe in eine Datei schreiben lässt und die in IPS einliest? Manche Sachen klappen einfach nicht über exec…
Gerne versuche ich Deinen weiteren Vorschlag - Schreiben des Rückgabewertes des Skriptes in eine Datei und dann in IPS einlesen. Ich weiss nur noch nicht wie das geht…Google ist mein Freund…
Der 3. Parameter bei IPS_Execute ist der für Warten. Ist dieser false, dann wird ein leerer String zurück gegeben. Was passiert, wenn Du da true einsetzt?