我想要一个将主机名解析为 IP 地址的命令,就像普通程序解析主机名一样。换句话说,它必须考虑 mDNS ( .local
) 和/etc/hosts
,以及常规 DNS。因此排除了host
、dig
和nslookup
,因为所有这三个工具仅使用常规 DNS 并且不会解析.local
地址。
在 Linux 上,getent
命令正是我想要的。然而,getent
在 OS X 上不存在。
有 Mac OS X 的等效版本吗getent
?我知道我可以使用 写几行getaddrinfo
,如果有必要的话我会这样做,但我只是想知道是否已经有一个标准命令可以做到这一点。
谢谢!
答案1
我想dscacheutil
这就是你要找的。它支持缓存、/etc/hosts、mDNS(针对.local)。
dscacheutil -q host -a name foo.local
另一种选择是dns-sd
dns-sd -q foo.local
答案2
(建立在用户422009的回答)
将其添加到您的〜/ .bash_profile:
getent() {
[ "$1" == "hosts" ] && shift
for x
do
echo $x $(dscacheutil -q host -a name $x | awk '/^ip_address/{print $NF}')
done
}
然后打开一个新终端或获取您的 bash_profile:
. ~/.bash_profile
然后它就可以工作了:
$ getent hosts www.example.com
www.example.com 93.184.216.34