因此,我在Google上查找了hostname -i和hostname -I的输出之间的区别,但没有任何重要意义。主机名-i的输出:127.0.1.1
主机名-I的输出:192.168.X.X
。我只能得到的是:-i:此选项用于获取IP(网络)地址。仅当主机名是可解析的时,此选项才有效。-I:此选项用于获取所有IP(网络)地址。该选项不取决于主机名的可解析性。如果有人可以为我详细说明这一点,那就太好了。
[根据您问题的信息,我推断您的问题与linux hostname
命令有关。这一点很重要,因为该命令的BSD风格(例如在macOS系统中找到)具有不同的参数集。
linux hostname command的手册页实际上非常详细地说明了差异,并且您已经从中摘录了该摘录:
-i, --ip-address Display the network address(es) of the host name. Note that this works only if the host name can be resolved. Avoid using this option; use hostname --all-ip-addresses instead. -I, --all-ip-addresses Display all network addresses of the host. This option enumerates all configured addresses on all network interfaces. The loopback interface and IPv6 link-local addresses are omitted. Contrary to option -i, this option does not depend on name resolution. Do not make any assumptions about the order of the output.
“正在解析的地址”(-i
参数表示正在通过DNS解析)。通过使用某些名称解析命令,例如nslookup <yourhostname>
或getent hosts <yourhostname>
,您可以获得类似的结果:
$ nslookup myhostname
Server: 127.0.0.1
Address: 127.0.0.1#53
Non-authoritative answer:
Name: myhostname
Address: X.X.X.X
-I
另一方面遍历主机的所有网络接口,并查看它们的实际配置。这意味着它通过完全不同的方法获取IP地址。
假设您的主机名设置为myhost
,hostname -i
尝试解析myhost
。您的/etc/hosts
]中可能有这样一行
127.0.0.1 myhost
这会将
myhost
解析为127.0.0.1
。
使用hostname -I
,您将获得网络接口的地址,显然没有回送地址。这些地址可能由DHCP分配。
在使用输出192.168.X.X
的情况下,只有一个接口仅连接了一个IPv4地址。
我的Ubuntu 19.10系统仅连接到WiFi时显示一个IPv4地址和一个IPv6地址,或者同时连接到WiFi和以太网时分别显示两个IPv4和IPv6地址。