Apa cara paling ringkas untuk menyelesaikan nama host ke alamat IP dalam skrip Bash? Saya menggunakan Arch Linux.
Jawaban yang Diterima:
Anda dapat menggunakan getent , yang disertakan dengan glibc (jadi Anda hampir pasti memilikinya di Linux). Ini diselesaikan menggunakan gethostbyaddr/gethostbyname2, dan juga akan memeriksa /etc/hosts /NIS/etc:
getent hosts unix.stackexchange.com | awk '{ print $1 }'
Atau, seperti yang dikatakan Heinzi di bawah, Anda dapat menggunakan dig dengan +short argumen (meminta server DNS secara langsung, tidak melihat /etc/hosts /NSS/dll) :
dig +short unix.stackexchange.com
Jika dig +short tidak tersedia, salah satu dari berikut ini akan berfungsi. Semua DNS kueri ini secara langsung dan mengabaikan cara penyelesaian lainnya:
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 }'
Jika Anda hanya ingin mencetak satu IP, tambahkan exit perintah ke awk alur kerja.
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 }'