我是新手,我做了一些搜索,但大多数答案都有相同的结果:MAC地址输出显示为“已发现”。
我的代码如下:
80 9d 61 62 63
# � � a b c
答案 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:将完整路径1>} 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;
}