GNU/Linux >> Linux の 問題 >  >> Linux

Bashスクリプトでホスト名をIPアドレスに解決する方法は?

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 }'

Linux
  1. BashスクリプトをBashにパイプするときにパラメータを設定する方法は?

  2. Awk内のBashスクリプトでBash関数を呼び出す方法は?

  3. Bash スクリプト - ユーザー入力の読み取り方法

  1. ファイルを bash シェル スクリプトに含める方法

  2. IP アドレスを抽出する Linux bash スクリプト

  3. N秒ごとにbashスクリプトを繰り返し実行するには?

  1. Bashスクリプトをデバッグする方法は?

  2. BashスクリプトにUnix/Linuxユーザーを追加する方法は?

  3. bash スクリプトを実行するには?