Bashスクリプトでホスト名をIPアドレスに解決する最もクリーンな方法は何ですか?私はそれを使用していますアーキテクチャLinux。
ベストアンサー1
あなたはそれを使用することができますgetent
。それが付属していますglibc
(したがって、あなたはほぼ確実にLinuxにそれを持っています)。この問題は gethostbyaddr/gethostbyname2 を使用して解決できるため、/etc/hosts
/NIS/etc も解決されます。
getent hosts unix.stackexchange.com | awk '{ print $1 }'
または、Heinziが以下のようにdig
パラメータを使用することもできます(/NSS/etc+short
を見ずにDNSサーバーに直接問い合わせます)。/etc/hosts
dig +short unix.stackexchange.com
利用できない場合は、次のいずれdig +short
かが機能します。これらのクエリはすべてDNSを直接クエリし、他の確認方法を無視します。
host unix.stackexchange.com | awk '/has address/ { print $4 }'
nslookup unix.stackexchange.com | awk '/^Address: / { print $2 }'
dig unix.stackexchange.com | awk '/^;; ANSWER SECTION:$/ { getline ; print $5 }'
1つのIPのみを印刷するには、exit
このコマンドをawk
ワークフローに追加します。
dig +short unix.stackexchange.com | awk '{ print ; exit }'
getent hosts unix.stackexchange.com | awk '{ print $1 ; exit }'
host unix.stackexchange.com | awk '/has address/ { print $4 ; exit }'
nslookup unix.stackexchange.com | awk '/^Address: / { print $2 ; exit }'
dig unix.stackexchange.com | awk '/^;; ANSWER SECTION:$/ { getline ; print $5 ; exit }'