当前位置: 首页>>技术教程>>正文


linux – 在bash中,检测公共IP地址的方法

, , , ,

问题描述

作为安装脚本的一部分,我想对机器的公共IP地址进行”educated guess”。它应在各种主机和平台上工作时,应尽可能强大。这是一个例子:

https://gist.github.com/4669037

该脚本使用3种方法,然后默认为/etc/hostname的值。到目前为止,我仅在Ubuntu上进行了测试。这可能会在其他发行版上起作用吗?还有我可以添加的其他方法吗?

最佳回答

curl ipinfo.io/ip

要么

wget -qO- ipinfo.io/ip

要么

lynx -source ipinfo.io/ip

get public ip address

次佳回答

如果您没有 curl ,curl ifconfig.me将是最佳选择:

wget -qO- ifconfig.me/ip

第三种回答

您要寻找多少个公共IP?如果计算机位于NAT之后怎么办?

  • curl /wget /netcat(nc)包含请求者地址的<URL>:大多数时候都可以使用,但是该站点可能无法从计算机访问(由于防火墙或临时/永久性)。您将获得最多的公共IP。

  • ifconfig:必须以root身份运行,否则,您还必须尝试/sbin/ifconfig/usr/sbin/ifconfig。如果计算机具有更多NIC怎么办?您如何判断哪种IP是正确的?如果仅在计算机的LAN上使用IPv6,该怎么办?无论如何,您将获得的公共IP最少(如果在计算机上配置了更多接口,则可能是一个错误的IP-如今,使用网络分接头设备和/或无所不在的虚拟化通常是这种情况)。

  • /etc/hostname:不需要存在,在许多系统上是/etc/HOSTNAME,它不包含IP地址,而应包含主机名(通常为FQDN)。

关键是,它可能会失败的方式很多,您可能应该考虑a)更精确地指定目标系统,或者b)是否真的需要了解IP,这是一个解决方案,在简单情况下可以工作,但在稍微复杂一些的设置中却​​失败了,值得使用吗?如果您认为需要IP,则准备一种方法来在根本不获取IP或获取错误IP的情况下优雅地处理故障。

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/9722.html,未经允许,请勿转载。