从客户端的计算机获取MAC地址

问题描述 投票:0回答:2

我是新手,我做了一些搜索,但大多数答案都有相同的结果:MAC地址输出显示为“Found”。

我的代码如下:

$ip = $_SERVER['REMOTE_ADDR'];
$mac=shell_exec("arp -a ".$ip);
$mac_string = shell_exec("arp -a $ip");
$mac_array = explode(" ",$mac_string);
$mac = $mac_array[3];

if(empty($mac)) {
   die("No mac address for $ip not found");
}

echo($ip." - ".$mac);
php networking syntax shell-exec mac-address
2个回答
2
投票

啊,老exec() vs shell_exec() vs passthru()问题。

要查看实际运行的命令以及系统实际返回的内容,请使用exec(),并分别将intarray作为其第2和第3个参数传递给var_dump(),然后在运行命令后$cmd = "arp -a " . $ip; $status = 0; $return = []; exec($cmd, $return, $status); var_dump($status, $return); die;

例如:

$status

如果一切顺利,那么$return应为零,$status可能是空的,也可能不是。但是,如果$return非零,那么请注意exec()的值是什么,因为这将是您的系统在尝试运行命令时告诉您正在发生的事情。

Protip:将arp传递给#> which arp /usr/sbin/arp $cmd = "/usr/sbin/arp -a" . $ip; 的完整路径:

REMOTE_ADDR

另外,请记住,根据命令的运行位置,function GetMAC() { $cmd = "arp -a " . $_SERVER["REMOTE_ADDR"]; $status = 0; $return = []; exec($cmd, $return, $status); if(isset($return[3])) return strtoupper(str_replace("-",":",substr($return[3],24,17))); return false; } 可能不会返回任何有用的内容。还有其他几种获取IP地址的方法,如果您需要的IP地址落后于某种代理,这些方法尤其有用。


0
投票

我猜我可以把这个脚本更进一步..记住,只适用于你的本地网络。如果不能得到,将返回false。

qazxswpoi
© www.soinside.com 2019 - 2024. All rights reserved.