什么影响“主机名 -I” IP 顺序

什么影响“主机名 -I” IP 顺序

的手册页hostname告诉我们该选项-I“不要对输出的顺序做任何假设。”
无论如何,我们的服务器总是首先返回外部 IP,然后返回本地网络 IP。不幸的是,许多遗留代码都是基于此假设运行的,同时用于hostname -I | cut -d' ' -f1获取外部 IP。上周末,情况发生了变化。现在,首先显示内部 IP,然后显示外部 IP。这是多年后出现的新情况,我想知道是什么影响了这种变化。
有什么假设吗?

操作系统:Ubuntu 14.04.3 LTS
内核:Linux 4.4.110-x86_64-jb1

答案1

有多种方法可以实现您需要的相同结果。除了使用 /proc 或“ip a”或“ss”之外,还有一种方法可以使用 SALT 或任何其他管理工具来提取数据。

我不太清楚“主机名”如何提取其数据,但我至少可以为您提供另一种方法来检查您需要的内容。

仅适用于 IPv4:

ip -4 a show dev eth0  | grep inet | cut -d " " -f6 | cut -d "/" -f1

如果你在同一个接口上有辅助 IP,并且需要主 IP,那么:

ip -4 a show dev eth0:0  | grep inet | cut -d " " -f6 | cut -d "/" -f1

仅适用于 IPv6:

ip -6 a show dev eth0  | grep inet | cut -d " " -f6 | cut -d "/" -f1

如果您需要子网掩码,请忽略我使用的最后一个“cut”命令。您可能希望用实际拥有的接口替换 eth0,至少该信息不会改变。

相关内容