我想在脚本中测试主机名是否解析为 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),枚举返回的每个套接字地址结构