我有一个 Linux 机器,我知道我可以使用以下命令获取分配给该机器的 IP 地址列表,/sbin/ifconfig -a
但是如何使用单个命令获取该 Linux 机器的主机名/DNS 列表?
为什么我问这个是因为使用/sbin/ifconfig -a
我看到有大约 6 个以太网连接到它,并且其中 4 个处于活动状态。现在,所有这些都有不同的 IP 地址,所以我的 Linux 机器有 4 个不同的 IP 地址(如果我在这里错了,请纠正我??)。现在,我的 Weblogic 应用程序服务器已将侦听地址定义为,让我们说abc.fb.us
等等xyz.fb.us
。现在,当我 ping 每个主机名(我应该调用abc.fb.us
主机名还是 DNS 或别名??)然后我得到一些 IP 地址,当我这样做时列出ifconfig
。
我知道我能做到nslookup 172.22.33.11
,而且我会得到abc.fb.us
,假设那是 的 IP 地址abc.fb.us
。
但我想使用单个命令获取主机名列表,就像我获取 IP 地址列表的方式一样。
我已经检查了我的/etc/hosts
,但它没有abc.fb.us
,xyz.fb.us
等等,所以很明显还有其他一些配置这些名称的方式,我如何获取所有主机名?
您根本无法获得这些信息,至少无法以可靠和完整的方式获得。系统不需要知道指向它的域的 DNS 名称。
如果定义了 PTR 记录,您可以像 Brennen 所描述的那样获得这些记录,但其他一切都是不可靠的。
例如,没有什么能阻止我为任何IP 地址设置 DNS 条目并尝试使用该 DNS 条目连接到该地址。对于大多数协议,您将完全不知道这已经发生(HTTP 是一个主要的例外,因为它会在
HOST
标头中传输主机名)。你不能做你想做的事。没有一个命令可以为您提供所需的信息。
此外,单个 IP 地址可以有多个转发 (A) 记录以及 CNAME 记录,所有这些都是系统的主机名。
您可以尝试转储您的 DNS 配置并搜索具有相同 IP 地址的所有记录,然后搜索以查看是否有任何 CNAME 记录引用 A 记录名称。这并不简单,当然也不是一个命令。
这一个班轮将工作:
ifconfig | grep 'inet addr:' | cut -d: -f2 | awk '{ print $1}' | xargs -L1 host