Linux 命令行实用程序首先使用 /etc/hosts 解析主机名

Linux 命令行实用程序首先使用 /etc/hosts 解析主机名

有多个命令行实用程序可以解析主机名(,,host),但它们都专门使用名称服务器,而应用程序通常首先查找(我相信使用 gethostbyname)。dignslookup/etc/hosts

是否有一个命令行实用程序可以解析主机名,其行为类似于通常的应用程序,因此/etc/hosts首先查找然后才询问名称服务器?

(我知道它可能就像 3 行 c 代码,但我需要它放在一个有点可移植的 shell 脚本中。)

答案1

这可以通过以下方式轻松实现getent

getent hosts 127.0.0.1

getent将查找 中配置的任何类型的数据nsswitch.conf

答案2

一个有用的工具是getent。因此,您可以使用getent hosts www.google.com、 或getent hosts localhost。它将从数据库中检索名称服务交换机配置中指定的条目/etc/nsswitch.conf

对于更现代的实现,使用getent ahosts www.google.com它将获得多种结果。

答案3

使用getent ahosts,例如:

$ getent ahosts www.google.com | sed -n 's/ *STREAM.*//p'
216.58.210.196
2a00:1450:4006:803::2004

您将通过 glibc 解析器获取所有 IPv4 和 IPv6 地址(因此/etc/hosts首先使用,通常在 中配置/etc/nsswitch.conf)。

不要使用getent hosts,因为它会为您提供 IPv6 或 IPv4 地址(而不是两者),并且所选协议可能不是不起作用的协议。事实上,IPv6 地址通常是首选,但在某些地方,路由器会过滤(不支持)IPv6 数据。

答案4

resolveip将会这样做。

奇怪的是,它是 RHEL 和 Ubuntu 上 mysql-server 包的一部分。

相关内容