Osx

Mac OS 命令在 Linux 上解析主機名,如“getent”

  • September 27, 2020

我想要一個將主機名解析為 IP 地址的命令,就像普通程序解析主機名一樣。換句話說,它必須考慮到 mDNS ( .local) 和/etc/hosts,以及正常 DNS。這樣就排除了host,dignslookup, 因為這三個工具都只使用正常 DNS 並且不會解析.local地址。

在 Linux 上,該getent命令完全符合我的要求。但是,getent在 OS X 上不存在。

是否有相當於 Mac OS X 的getent?我知道我可以使用 幾行程式碼編寫一個,getaddrinfo如果必須的話,我會這樣做,但我只是想知道是否已經有一個標準命令可以做到這一點。

謝謝!

我想dscacheutil這就是你要找的。它支持記憶體、/etc/hosts、mDNS(用於 .local)。

dscacheutil -q host -a name foo.local

另一種選擇是dns-sd

dns-sd -q foo.local

有關 dnscacheutil 的更多資訊

(基於user422009 的回答

將此添加到您的**~/.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

引用自:https://unix.stackexchange.com/questions/373309