在PHP中的特定以太网端口获取私有IP地址

时间:2016-03-07 04:48:20

标签: php

我在服务器上运行PHP coe。我想要本地系统的IP地址。之前已经问过这个问题 - PHP how to get local IP of system

当我使用上述帖子中提到的任何解决方案时,我只能获取主机名,而不是IP地址。

e.g。在我的机器上我有

eth0:10.0.2.15
ETH1:192.168.1.115

当我运行以下代码时:

$localIP = getHostByName(getHostName());

我只获得主机名 - localvm。我想要192.168.1.115

我可以获取私人IP地址吗?更具体地说,我可以在特定端口获取IP地址吗?

2 个答案:

答案 0 :(得分:3)

您可以通过以下方式获取Linux中特定网络端口的IP地址:

function getInterfaceIP($interface = 'eth0')
{
        $interfaceCommand = "/sbin/ifconfig " . $interface . " | grep 'inet addr:' | cut -d: -f2 | awk '{ print $1 }'";
        $output = exec($interfaceCommand);

        return $output;
}

echo getInterfaceIP('eth0');

请注意,命令语法可能因操作系统而异。此示例适用于Linux。 PHP没有任何内置类来执行此操作。

您可能想要添加另一个命令 - 获取所有可用网络接口的列表(' ifconfig -s'提供这些接口)。

答案 1 :(得分:0)

接受的答案是正确的。但是,如果某人正在使用AWS云或Openstack,他可以使用cloud-init工具(已经存在)并使用魔术IP检索本地IP地址,如下所示:

curl http://169.254.169.254/latest/meta-data/local-ipv4/