Utilitas menyukai host
dan dig
membiarkan Anda melihat alamat IP yang sesuai dengan nama host.
Ada juga getent
utilitas yang dapat digunakan untuk query /etc/hosts
atau database NSS lainnya.
Saya mencari utilitas standar yang nyaman (yang tersedia di Debian, katakanlah) yang menyelesaikan nama host terlepas dari mana ia didefinisikan.
Seharusnya kurang lebih setara dengan
ping "$HOST" | head -1 | perl -lne '/\((.*?)\)/ && print $1'
getent
?getent
juga terlihat di DNS (saya pikir itu hanya terlihat di/etc/hosts
). Sekarang saya sudah mencobanya, inilah yang salah dengangetent
: karenagoogle.com
, ia mengembalikan satu alamat, dan alamat itu adalah IPv6. Yang tidak membantu, karena saya berada di jaringan IPv4, dan perintah saya sebenarnya akan mencetak alamat IPv4.Jawaban:
Satu-satunya perintah yang saya tahu melakukan apa yang Anda inginkan adalah resolip:
http://linux.die.net/man/1/resolveip
Namun itu hanya dilengkapi dengan mysql-server, yang mungkin tidak ideal untuk dipasang di mana-mana.
sumber
Jika masalahnya adalah Anda tidak ingin menyelesaikan nama-nama ini menggunakan ipv6, maka minta getent untuk menggunakan ipv4 saja. Ini akan menghitung semua alamat ipv4:
sumber
ahostsv6
.getent ahosts google.com
.Masalahnya adalah ada beberapa API untuk menyelesaikan nama host
gethostbyname
,getaddrinfo
daninet_pton
beberapa dari mereka dapat mengembalikan lebih dari satu alamat dan / atau Anda dapat menanyakan jenis alamat yang Anda inginkan.Jika Anda ingin cara portabel untuk mendapatkan satu alamat IPv4, maka mungkin:
sumber
(Jawaban ini hanya berlaku jika Anda melakukan root pada mesin.)
Saya dulu merasa terganggu dengan ini juga, dan kemudian saya standar menjalankan dnsmasq di semua mesin saya. Dnsmasq adalah cache DNS yang ringan. Sebagai manfaat tambahan, ia melayani konten
/etc/hosts
lebih dari DNS.sumber
gethostip -d name.domain
darisyslinux
paket di Ubuntu (dan mungkin Debian).-d
menghasilkan format desimal.sumber
Saya menggunakan pengetahuan perl murni saya dan membuat skrip kecil dengan penanganan kesalahan:
/ usr / local / bin / gethostip:
Terima kasih kepada Stéphane Chazelas untuk ide awalnya
sumber