我想在脚本中测试主机名是否解析为 127.0.0.1 以外的其他内容,作为安装脚本的飞行前测试。我知道的工具(dig、nslookup)专门查询 DNS。在我的情况下, /etc/hosts 中的正确条目是有效的配置。所以问题是:
是否有一个类似 dig 的工具,理想情况下已经在系统上,它通过 nsswitch.conf 执行全名解析过程,就像(例如)ping 那样?
dig my-test-server-that-only-exists-in-etc-hosts
Run Code Online (Sandbox Code Playgroud)
返回 NXDOMAIN。
这已经有关于 SU 的答案:
Bash:查找主机名的 IP,包括搜索中的 /etc/hosts
基本上,你使用
getent ahosts host_name
Run Code Online (Sandbox Code Playgroud)
其中 host_name 可以是您的 中的一个条目/etc/hosts,在这种情况下它将解析为该条目,或者您的 DNS 可以解析的主机。
引用getent(1)手册页:
ahosts
未提供密钥时,使用 sethostent(3)、gethostent(3) 和 endhostent(3) 枚举 hosts 数据库。这与使用主机相同。当一个或多个关键参数?都提供了,把每个key依次传给getad?drinfo(3) 带有地址族 AF_UNSPEC,枚举返回的每个套接字地址结构