我想找到连接的网络接口客户端。有可能吗?
如果可以使用Bash或其他脚本语言。这对我来说是可以接受的。
我正在使用Freebsd。
以下是代码的外观。
function get_connected_interface(){
//...
}
echo get_connected_interface(); //should print network interface. for example em0
答案 0 :(得分:0)
如果您使用的是Apache,PHP会将$ _SERVER [" SERVER_ADDR"]设置为客户端连接到te服务器的目标 IP地址。
如果您使用的是nginx,lighttpd或其他网络服务器,请查看仅包含<?php phpinfo(); ?>
的网页结果,了解如何获取目标<的 IP地址 / strong>(服务器的一个IP地址)
在任何情况下,您都可以使用此PHP脚本启动ifconfig
并搜索具有此IP地址的接口。
我说:
function get_connected_interface() {
static $interfaces=array();
if (!count($interfaces)) {
$curif="";
// launch ifconfig and parse its result (inet/inet6)
// but only at first function call
exec("ifconfig",$out);
foreach($out as $line) {
if (preg_match("#^([a-z0-9\.]*): #",$line,$mat)) {
$curif=$mat[1];
}
if (preg_match("#inet ([0-9\.]*) #",$line,$mat)) {
$interfaces[$mat[1]]=$curif;
}
if (preg_match("#inet6 ([0-9a-fA-F:]*) #",$line,$mat)) {
$interfaces[$mat[1]]=$curif;
}
}
}
return $interfaces[$_SERVER["SERVER_ADDR"]];
}