Osx
Mac OS 命令在 Linux 上解析主機名,如“getent”
我想要一個將主機名解析為 IP 地址的命令,就像普通程序解析主機名一樣。換句話說,它必須考慮到 mDNS (
.local
) 和/etc/hosts
,以及正常 DNS。這樣就排除了host
,dig
和nslookup
, 因為這三個工具都只使用正常 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
(基於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