host
と同じユーティリティを使用するdig
と、ホスト名に対応するIPアドレスを表示できます。
getent
クエリやその他のNSSデータベースに使用できる/etc/hosts
ユーティリティもあります。
私は定義された場所に関係なくホスト名を解決するための便利な標準ユーティリティ(Debianで利用可能)を探しています。
これは、以下とある程度同じでなければなりません。
ping "$HOST" | head -1 | perl -lne '/\((.*?)\)/ && print $1'
答え1
問題がこれらの名前を解決するためにipv6を使用したくない場合は、getentにipv4のみを使用するように依頼してください。これにより、すべてのipv4アドレスが一覧表示されます。
giuseppe@blatta:~$ getent ahostsv4 www.google.com | cut -d' ' -f1 | sort -u
173.194.40.80
173.194.40.81
173.194.40.82
173.194.40.83
173.194.40.84
答え2
問題は、ホスト名を解決できる複数のAPIがあることです(例:)。gethostbyname
そのgetaddrinfo
うちのinet_pton
いくつかは複数のアドレスを返すか、必要なアドレスの種類を照会することができます。
ポータブルな方法が欲しいなら一つIPv4アドレスであれば可能です。
perl -MSocket -le 'print inet_ntoa inet_aton shift' www.google.com
答え3
私が知る限り、あなたが望むことをする唯一のコマンドは次のとおりです。
http://linux.die.net/man/1/resolveip
しかし、これはmysql-serverにのみ提供されているので、どこにでもインストールするのに適していない可能性があります。
答え4
(この回答は、コンピュータにrootアクセス権がある場合にのみ適用されます。)
私もこれを悩んで走ることを標準化しました。DNS私のすべてのコンピュータで。 Dnsmasqは軽量DNSキャッシュです。追加の利点として、DNSを介してコンテンツを提供します/etc/hosts
。