Mit PHP einen Befehl in Linux ausführen?

2 Antworten

Mit at kannst Du ein Kommando zu einem bestimmten Zeitpunkt ausführen lassen. Du bekommst hierüber keine Ausgabe und weißt auch nicht, ob und mit welchem Ergebnis das Kommando ausgeführt wurde. Siehe: https://wiki.ubuntuusers.de/at/

Was Du versuchst müsste eigentlich durch direkten Aufruf in PHP mit

exec("gpio -g write 20 1");

möglich sein. Um auch noch die Prozess-ID zu bekommen schau dir mal das Beispiel hier an: https://stackoverflow.com/questions/1470910/invoke-external-shell-script-from-php-and-get-its-process-id

Wie gesagt. Es funktioniert ja alles bis auf das at Kommando. Den Pin kann ich ja problemlos ein- und ausschalten.

Nur wenn ich versuche das at Kommando per PHP aufzurufen, passiert nichts.

Selbst wenn ich keine Rückgabe über den Job bekomme, würde ich at trotzdem gerne ausführen können. Im Notfall, wenn ich die Ausführung des Jobs doch nicht will, beende ich diesen über das Terminal.

0
@Illusion1802

Wie gesagt ist das at-Kommando nicht das was du suchst. Du willst es doch sofort beim Anklicken starten und nicht erst nach 2 Minuten oder so. Wenn Du so etwas regelmäßig ausführen willst erstellt einen cronjob.

0
@Illusion1802

In dem geposteten Link ist doch der Verweis auf proc_open(), damit wird ein Kommando ausgeführt und Du kannst mit diesem über STDIN/STDOUT interagieren und auch die Fehler auslesen.

Das ganze ist nicht ganz risikolos, wenn z.B. auch Nutzereingaben verwendet werden sollen (Prüfung nicht vergessen!).

Spätestens im Log solltest Du dann sehen können, warum die Ausführung von at scheitert.

0

Hallo

Mit PHP einen Befehl in Linux ausführen?

Das geht so:

http://php.net/manual/de/function.shell-exec.php

Mein Sohn wickelt damit seine ganze Heim-Automation über ein Web-Interface auf seinem Smartphone ab.

Sieht dann zum Beispiel so aus:

<?php
$output 
shell_exec('gpio -g write 20 1');
echo 
"<pre>$output</pre>";?>

Wenn Du innerhalb der Shell-Ausführung eine Abfrage machst kommt das Ergebnis logischerweise auch in php an.

Linuxhase

Openhab führt Script nicht aus?

Ich betreibe Openhab2 auf einem Raspberry Pi. Sitemap, Items etc funktionieren einwandfrei. Nun möchte ich einen Wakeonlan-Befehl vom Pi an meinen Pc senden. Dazu habe ich mir ein Shell-Script angelegt, welches diesen Befehl sendet. Führe ich das Script direkt vom Pi aus, funktioniert es tadellos.

Anschließend habe ich mir ein Switch-Item geschrieben und dieses in die Sitemap eingebunden.

Switch WakeOnLan "WOL" ["Switchable"] {autoupdate="false", exec=">[ON:/etc/openhab2/scripts/wakeonlan.sh]"}

Laut Openhab2 Events wird der Befehl (Statusänderung des Items in der Sitemap) ohne Fehlermeldung ausgeführt, der Befehl wird allerdings nicht an den Pc übermittelt.

Ich habe ebenfalls schon versucht das Script dem User Openhab zuzuweisen, sowie dem Openhabuser Rootrechte gegeben. Dies blieb allerdings erfolglos...

Ich bin für jede Antwort dankbar, und hoffe ihr könnt mir helfen!

...zur Frage

[Bukkit Plugin Programmierung] Scheduler in onEnable, der nach bestimmter Zeit einen Plugin Befehl ausführt?

Hallo erstmal :D

Ich versuche mich seit ein paar Tagen an einfachen Bukkit Plugins ... ^^ Ich bringe mir damit auch gleichzeitig Java bei, da ich auf dem Gebiet noch nichts gemacht habe ;)

Mein momentanes Problem ist jetzt:

Ich würde gerne einen von mir erstellten Befehl beim Serverstart automatisch mit einem Repeating Scheduler in einem Loop ausführen.

Nur hängt es da bei mir ^^ Wie schaffe ich es, einen Sheduler in onEnable zu packen, der dann Bukkit.dispatchcommand ausführt? ^^ Denn dafür brauche ich ja einen sender, welchen in nur durch ein public boolean bekomme xD Den kann man ja schlecht in einen public void hauen ^^

Oder kann ich vielleicht eher den Inhalt des Befehls mit einem Scheduler in onEnable packen? Der Befehl würde das ausführen:

w.setThundering(false);
w.setStorm(false);
w.setWeatherDuration(1000000);

Aber dafür benötige ich ja auch einen public boolean ... ^^

Ich steh' da echt grad ein wenig auf dem Schlauch :D Bitte habt etwas Nachsicht ... Ich mach das echt erst seit 3 Tagen und muss noch viiiel lernen ^^

Ich bedanke mich schon einmal vielmals bei euch und wünsch' euch noch ne angenehme Nacht / Morgen ^^

MfG Tim ;)

...zur Frage

CMD Befehl per Batch Datei ausführen

Wie sieht eine Batch Datei aus die automatisch CMD öffnet und folgenden Befehl ausführt: netsh wlan show networks mode=bssid

...zur Frage

Befehl eines anderen Plugin ausführen.

Wie kann ich den Befehl eines anderen Plugins ausführen? Ich habe schon etwas von ".dispatchCommand" gehört, jedoch funktioniert es nicht. Ich würde mich freuen, wenn in der Antwort noch der Code wäre.

~lg.

...zur Frage

Error, wenn php Website(apache), python-script ausführt?

Ich habe mit apache einen Webserver installiert. Wenn ich die Website aufrufe erscheint immer diese Fehlermeldung:

Traceback (most recent call last): File "/home/pi/Desktop/Programme/LED.py", line 6, in GPIO.setup(led_pin, GPIO.OUT) RuntimeError: No access to /dev/mem. Try running as root!

Im index.php steht:

<?php
echo shell_exec("python /home/pi/Desktop/Programme/LED.py 2>&1");
?>

Im LED.py steht:

import RPi.GPIO as GPIO
import time
led_pin = 17
try:
GPIO.setmode(GPIO.BCM)
GPIO.setup(led_pin, GPIO.OUT)
while True:
GPIO.output(led_pin, True)
time.sleep(1.0)
GPIO.output(led_pin, False)
time.sleep(1.0)
except KeyboardInterrupt:
pass
GPIO.cleanup()
...zur Frage

Mit PHP Shell Script ausführen?

Hi Community, und zwar möchte ich mithilfe von php ein shell script ausführen und den rückgabewert abfangen.

Mein Shell script: (/home/pi/test.sh)

var=$(sudo gatttool -b 50:F1:4A:50:9C:97 --char-write-req --handle=0x0025 --value=32 --listen >> logfile.txt &)
A=$!
sleep 2
kill $A
echo "$var"
exit 0

und nun bräuchte ich ein php skript (Speicherort: /var/www/html/test.php)das dieses Skript ausführt und den Rückgabewert in eine Variable speichert. Jegliche Versuche von mir sind leider gescheitert...

Gruß Physikgr.

...zur Frage

Was möchtest Du wissen?