¿Cuál es la forma más fácil de obtener la dirección IP de un nombre de host?
Estaba pensando en probar pingay analizarlo desde la salida. Sin embargo, eso no parece muy agradable y probablemente no funcionará de la misma manera en todos los sistemas.
Busqué un poco y encontré soluciones nslookup, pero eso no funciona para los nombres de host en /etc/hosts.

Respuestas:
Puede hacer esto con llamadas al sistema estándar. Aquí hay un ejemplo en Perl:
produce la salida:
(En la línea de comandos, el mismo guión se puede escribir como:
perl -MSocket -MData::Dumper -wle'my @addresses = gethostbyname("google.com"); my @ips = map { inet_ntoa($_) } @addresses[4 .. $#addresses]; print Dumper(\@ips)')Puede hacer esto de manera similar en otros idiomas: consulte la página del manual para ver las llamadas al sistema,
man -s3 gethostbynameetc.fuente
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:
Editar
En Linux, (y algunas variantes de OS X, al menos), es posible que pueda usar
resolveip, que es parte del paquete del servidor MySQL:fuente
/etc/hosts.) Inténtalohost localhost.serv ~ $ host localhost \n localhost has address 127.0.0.1resolveip.resolveipno está instalado por defecto en mi Debian.Esta publicación antigua parece tener muchas soluciones creativas.
Si necesito asegurarme de que también
/etc/hostsse accede, tiendo a usargetent hosts somehost.comEsto funciona, al menos si `/etc/nsswitch.conf 'se ha configurado para usar archivos (como suele ser).
fuente
ahostsque devuelve información de varias líneas.Para IPv4, hay un programa estándar que funciona de forma inmediata utilizando el solucionador que incluye / etc / hosts:
Forma parte de Debian, instálelo con:
Para otros protocolos que no sean IPv4 (como IPv6), actualmente no conozco una herramienta similar. Actualización: Debido a esto, acabo de escribir una pequeña herramienta que también es capaz de resolver IPv6:
https://github.com/hilbix/misc/blob/master/src/ipof.c
Está pensado para un uso de shell rápido y sucio,
gethostippero también permite IPv6:También se puede usar de forma interactiva, por ejemplo:
HTH
fuente
Bueno, mi solución actual:
fuente
sedcomporta ligeramente diferente en cada sistema. :) Que molesto. Lo cambié un poco, creo que debería funcionar en todas partes ahora.¿Por qué no
dig +short hostname?(consulta DNS)
fuente
/etc/hostsen cuenta.En algunos Unices, lo siguiente funcionará:
Por ejemplo, en Mac OS X, obtengo esto:
fuente
arp -n hostnamemuestra la IP.Usar
pingno es tan malo ya que generalmente no tienes dependencias fuertes.Aquí está la función que utilicé en los sistemas Linux:
fuente
fuente