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