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

时间:2016-05-20 01:09:44

标签: php networking syntax shell-exec mac-address

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

我的代码如下:

 80 9d 61 62 63
# �  �  a  b  c

2 个答案:

答案 0 :(得分:2)

啊,旧的exec() vs shell_exec() vs passthru()问题。

要查看实际正在运行的命令,以及系统实际返回的内容,请使用exec(),并将其传递给int并且array分别作为第2和第3个参数,然后在运行命令后var_dump()

例如:

$cmd = "arp -a " . $ip;
$status = 0;
$return = [];
exec($cmd, $return, $status);
var_dump($status, $return);
die;

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

Protip:将完整路径} exec()传递给arp as-in:

#> which arp
/usr/sbin/arp

$cmd = "/usr/sbin/arp -a" . $ip;

另外,请记住,根据命令的运行位置,REMOTE_ADDR可能不会返回任何有用的内容。还有其他几种获取IP地址的方法,如果您需要的IP地址落后于某种代理,这种方式尤其有用。

答案 1 :(得分:0)

猜猜我可以进一步执行此脚本。.记住,仅在您的本地网络上有效。如果无法获取,将返回false。

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; 
}