如何通过 nsswitch 解析主机名?

如何通过 nsswitch 解析主机名?

我想在脚本中测试主机名是否解析为 127.0.0.1 以外的其他名称,作为安装脚本的预运行测试。我知道的工具(dig、nslookup)专门查询 DNS。在我的情况下, /etc/hosts 中的正确条目是有效的配置。所以问题是:

是否有一个类似 dig 的工具(最好已经在系统上)可以通过 nsswitch.conf 进行完整的名称解析过程,就像(例如) ping 那样?

dig my-test-server-that-only-exists-in-etc-hosts 

返回 NXDOMAIN。

答案1

SU上已经有答案了:

Bash:在 IP 中查找主机名,包括搜索中的 /etc/hosts

基本上,你使用

getent ahosts host_name

其中 host_name 可以是您的 中的一个条目/etc/hosts(在这种情况下它将解析为该条目),也可以是您的 DNS 可以解析的主机。

引用手册getent(1)页:

主机
如果未提供密钥,请使用 sethostent(3)、gethostent(3) 和 endhostent(3) 枚举主机数据库。这与使用主机相同。当提供一个或多个键参数时,将每个键连续传递给地址族 AF_UNSPEC 的 getaddrinfo(3),枚举返回的每个套接字地址结构

相关内容