Apa cara termudah untuk mendapatkan alamat IP dari nama host?
Saya sedang berpikir tentang mencoba ping
dan menguraikannya dari output. Namun, itu sepertinya tidak terlalu bagus dan mungkin tidak akan bekerja dengan cara yang sama pada semua sistem.
Saya mencari sedikit di sekitar dan menemukan solusi dengan nslookup
, tetapi itu tidak berhasil untuk nama host di /etc/hosts
.
Jawaban:
Anda dapat melakukan ini dengan panggilan sistem standar. Berikut ini contoh dalam Perl:
menghasilkan output:
(Pada baris perintah, skrip yang sama dapat ditulis sebagai
perl -MSocket -MData::Dumper -wle'my @addresses = gethostbyname("google.com"); my @ips = map { inet_ntoa($_) } @addresses[4 .. $#addresses]; print Dumper(\@ips)'
:)Anda dapat melakukan hal yang sama dalam bahasa lain - lihat halaman manual untuk panggilan sistem di
man -s3 gethostbyname
dll.sumber
perl -MSocket -MData::Dumper -wle'my @addresses = gethostbyname("www.google.com"); my @ips = map { inet_ntoa($_) } @addresses[4 .. $#addresses]; print $ips[0]'
.sed -e '/some people consider Perl a better form/s/better/worse/'
SCNRhost <hostname>
Ex:
Edit
Di Linux, (dan beberapa varian OS X, setidaknya), Anda mungkin dapat menggunakan
resolveip
, yang merupakan bagian dari paket server MySQL:sumber
/etc/hosts
.) Cobahost localhost
.serv ~ $ host localhost \n localhost has address 127.0.0.1
resolveip
.resolveip
tidak diinstal secara default di Debian saya.Posting kuno ini tampaknya memiliki banyak solusi kreatif.
Jika saya perlu memastikan juga
/etc/hosts
diakses, saya cenderung menggunakannyagetent hosts somehost.com
Ini berfungsi, setidaknya jika `/etc/nsswitch.conf 'telah dikonfigurasi untuk menggunakan file (seperti biasanya).
sumber
ahosts
mengembalikan info multi-line.Untuk IPv4 ada program standar yang bekerja di luar kotak menggunakan resolver termasuk / etc / hosts:
Ini adalah bagian dari Debian, instal dengan:
Untuk protokol lain selain IPv4 (seperti IPv6) saat ini saya tidak tahu alat serupa. Memperbarui: Karena ini saya hanya menulis alat kecil yang mampu menyelesaikan IPv6 juga:
https://github.com/hilbix/misc/blob/master/src/ipof.c
Diperkirakan untuk penggunaan shell yang cepat dan kotor seperti
gethostip
tetapi memungkinkan IPv6, juga:Ini juga dapat digunakan secara interaktif, misalnya:
HTH
sumber
Nah, solusi saya saat ini:
sumber
sed
berperilaku sedikit berbeda pada setiap sistem. :) Menyebalkan sekali. Saya mengubahnya sedikit, saya pikir itu harus bekerja di mana-mana sekarang.Mengapa tidak
dig +short hostname
?(DNS permintaan)
sumber
/etc/hosts
memperhitungkan.Pada beberapa Unites, yang berikut ini akan berfungsi:
Sebagai contoh pada Mac OS X, saya mendapatkan ini:
sumber
arp -n hostname
menunjukkan IP.Menggunakan
ping
tidak terlalu buruk karena biasanya Anda tidak memiliki dependensi yang kuat.Berikut adalah fungsi yang saya gunakan pada sistem Linux:
sumber
sumber