用于在 Linux 上解析主机名(如“getent”)的 Mac OS 命令

用于在 Linux 上解析主机名(如“getent”)的 Mac OS 命令

我想要一个将主机名解析为 IP 地址的命令,就像普通程序解析主机名一样。换句话说,它必须考虑 mDNS ( .local) 和/etc/hosts,以及常规 DNS。因此排除了hostdignslookup,因为所有这三个工具仅使用常规 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

有关 dnscacheutil 的更多信息

答案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

相关内容