我有一台 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
等等,所以显然还有其他方法配置这些名称,我如何获取所有主机名?
答案1
这行代码可以工作:
ifconfig | grep 'inet addr:' | cut -d: -f2 | awk '{ print $1}' | xargs -L1 host
答案2
您根本无法获得这些信息,至少无法以可靠和完整的方式获得这些信息。系统不需要知道哪个域的哪个 DNS 名称指向它。
如果定义了 PTR 记录,您可以像 Brennen 描述的那样获得这些记录,但其他一切都是不可靠的。
例如,没有什么可以阻止我为任何IP 地址并尝试使用该 DNS 条目连接到该地址。对于大多数协议,您将完全不知道发生了这种情况(HTTP 是一个主要例外,因为它会在标HOST
头中传输主机名)。
答案3
你无法做你想做的事。没有任何一个命令可以给你想要的信息。
此外,单个 IP 地址可以有多个正向 (A) 记录,并且 CNAME 记录(所有这些记录都是系统的主机名)也可以有。
您可以尝试转储 DNS 配置并搜索所有具有相同 IP 地址的记录,然后搜索是否有任何 CNAME 记录引用 A 记录名称。这并不简单,当然也不是一个命令。