Bashスクリプトでホスト名をIPアドレスに解決する最も簡潔な方法は何ですか? ArchLinuxを使用しています。
承認された回答:
getent
を使用できます 、glibc
が付属しています (したがって、ほぼ確実にLinuxで使用できます)。これはgethostbyaddr/gethostbyname2を使用して解決されるため、/etc/hosts
もチェックします。 / NIS / etc:
getent hosts unix.stackexchange.com | awk '{ print $1 }'
または、Heinziが以下で述べているように、dig
を使用できます。 +short
で 引数(DNSサーバーを直接照会し、/etc/hosts
を参照しません / NSS / etc):
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 }'