Actually the below coding is working fine, if I provide the ip address directly inside the shell_exec()
$mac = shell_exec('arp -a 192.168.0.107');
If, I get the ip of the client from his system and stored in a variable and call the same, as given below,
$mac = shell_exec('arp -a' . escapeshellarg($ip));
The output is not generating.
Here is the Full code:
<?php
$ip = $_SERVER['REMOTE_ADDR'];
$mac = shell_exec('arp -a'. escapeshellarg($ip));
//Working fine when sample client IP is provided...
//$mac = shell_exec('arp -a 192.168.0.107');
$findme = "Physical";
$pos = strpos($mac, $findme);
$macp = substr($mac,($pos+42),26);
if(empty($mac))
{
die("No mac address for $ip not found");
}
// having it
echo "mac address for $ip: $macp";
?>
Please advise, why escapeshellarg($ip)
does not work in the shell_exec()
.
This is the correct format:
or
(using the
escapeshellarg
call)This is working for me...
shell_exec('arp '.$ip.' | awk \'{print $4}\'');
Result from Terminal
└── arp 10.1.10.26 | awk '{print $4}'
a4:5e:60:ee:29:19
A space is missing just after the -a in 'arp -a'.escape...
So it turns into arp -a192.168.0.107