【问题标题】:Get the private ip address at a specific ethernet port in PHP在 PHP 中获取特定以太网端口的私有 IP 地址
【发布时间】:2016-06-20 13:36:18
【问题描述】:

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

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

例如在我的机器上我有

eth0:10.0.2.15
eth1:192.168.1.115

当我运行以下代码时:

$localIP = getHostByName(getHostName());

我只得到主机名 - localvm。我要192.168.1.115

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

【问题讨论】:

  • 这取决于操作系统。你运行的是什么操作系统?
  • 我正在使用 Amazon linux 和 Cent OS 进行本地开发。

标签: php


【解决方案1】:

您可以通过以下方式获取 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' 提供这些)。

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 2011-06-26
      • 2016-10-24
      • 1970-01-01
      • 2022-10-12
      • 1970-01-01
      • 2015-06-21
      • 1970-01-01
      • 1970-01-01
      • 2014-12-01
      相关资源
      最近更新 更多