Erst einmal: Ich habe gehörige Sicherheits-Bauchschmerzen, Dir Tipps zu geben, wie man ein System dazu bringt, nach Aufrufen via Webserver dieses oder jenes mit Root-Rechten auszuführen. Überlege Dir genau, ob das, was Du vor hast, wirklich zu Deinem derzeitigen Wissensstand passt.
arping -c 1 -w 3 $ipadresse
Wie bekomme ich arping unter PHP ausgeführt?
Unter Ubuntu läuft es mit dem Aufruf unter PHP offenbar fast ohne weiteres, wenn Du das Gerät mit angibst:
<?php
header ( "Content-Type: text/plain; charset=UTF-8" );
echo `arping -I enp7s0 -w1 -f 192.168.1.251`;
Ausgaben:
ARPING 192.168.1.251 from 192.168.1.2 enp7s0
Unicast reply from 192.168.1.251 [02:01:D3:81:50:A5] 1.083ms
Sent 1 probes (1 broadcast(s))
Received 1 response(s)
Beachte: arping unterscheidet sich von Linux-Distribution zu Linux-Distribution zu BSD teils erheblich!
Auch ein (Keulen-)Eintrag in /etc/sudoers mit
wwwrun ALL=(ALL) ALL
... wenn es dennn benötigt wird, dann fehlte da ein NOPASSWD. oder wie willst Du ein Passwort eingeben?
Unter dem strengen Debian werden root-rechte benötigt:
<?php
header ( "Content-Type: text/plain; charset=UTF-8" );
echo `sudo /usr/sbin/arping -I eth0 -C1 -W1 192.168.1.251`;
Der Eintrag zugörige Eintrag in /etc/sudoers für Debian:
www-data ALL=NOPASSWD: /usr/sbin/arping
Falls Du die Adresse übergeben willst, dann denke bitte daran, diese mit escapeshellarg()
zu entschärfen. Das ist extrem wichtig, weil Du arping mit root-rechten startest.
<?php
header ( "Content-Type: text/plain; charset=UTF-8" );
$ip='192.168.1.251';
$device='eth0';
$system = 'sudo /usr/sbin/arping -C1 -W1 -I '
. escapeshellarg( $device )
. ' '
. escapeshellarg( $ip );
echo $system . PHP_EOL . PHP_EOL;
echo `$system`;
sudo /usr/sbin/arping -C1 -W1 -I 'eth0' '192.168.1.251'
ARPING 192.168.1.251
60 bytes from 02:01:d3:81:50:a5 (192.168.1.251): index=0 time=732.132 usec
--- 192.168.1.251 statistics ---
1 packets transmitted, 1 packets received, 0% unanswered (0 extra)
rtt min/avg/max/std-dev = 0.732/0.732/0.732/0.000 ms
Jetzt musst Du das Zeug noch an Dein Linux anpassen (Apache-User, Pfad zu arping, ggf. dessen Optionen.