Wie lasse ich Befehle für Benutzer-WWW-Daten zu?

Wie lasse ich Befehle für Benutzer-WWW-Daten zu?

Ich versuche, den folgenden PHP-Befehl auszuführen, um die IP-Adresse von eth0 zu erhalten.

$ip = trim(shell_exec("/sbin/ifconfig eth0 | grep -i 'inet Adresse:' | tr ':' ' ' | awk '{ print $3 }'"));

Aber ich bekomme nichts zurück. Wenn ich genau denselben Befehl über SSH ausführe, bekomme ich die IP, also sollte der Befehl funktionieren.

Ich habe visudodiese Zeilen geöffnet und hinzugefügt und danach Apache2 neu gestartet

www-data        ALL = NOPASSWD: /sbin/ifconfig
www-data        ALL = NOPASSWD: /bin/grep
www-data        ALL = NOPASSWD: /usr/bin/awk
www-data        ALL = NOPASSWD: /usr/bin/tr

Aber ich bekomme immer noch nichts zurück

Antwort1

Ihr Grep-Muster scheint nicht mit der Ausgabe von übereinzustimmen und erzeugt ifconfigdeshalb keine Ausgabe. Versuchen Sie Folgendes:grep

$ip = trim(shell_exec("/sbin/ifconfig eth0 | grep -i 'inet Adresse:' | awk '{ print $2 }'"));

Antwort2

Ich habe die Lösung gefunden. Es liegt daran, dass shell_execimmer eine englische Ausgabe ausgegeben wird, auch wenn das Betriebssystem auf Deutsch eingestellt ist. Wenn Sie es ausführen, shell_exec("/sbin/ifconfig")erhalten Sie in der Ausgabe immer zB inet addrstatt .inet Adresse

Ich habe auch vergessen, den Benutzer und die Gruppe meiner Datei auf www-datamit zu ändern chownund die Ausführung des Skripts mit zuzulassen chmod. Ich weiß jedoch nicht, ob das notwendig ist.

verwandte Informationen