¿Cuál es la forma más fácil de obtener la dirección IP de un nombre de host?
Estaba pensando en probar ping
ay 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 gethostbyname
etc.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.1
resolveip
.resolveip
no está instalado por defecto en mi Debian.Esta publicación antigua parece tener muchas soluciones creativas.
Si necesito asegurarme de que también
/etc/hosts
se accede, tiendo a usargetent hosts somehost.com
Esto funciona, al menos si `/etc/nsswitch.conf 'se ha configurado para usar archivos (como suele ser).
fuente
ahosts
que 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,
gethostip
pero también permite IPv6:También se puede usar de forma interactiva, por ejemplo:
HTH
fuente
Bueno, mi solución actual:
fuente
sed
comporta 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/hosts
en cuenta.En algunos Unices, lo siguiente funcionará:
Por ejemplo, en Mac OS X, obtengo esto:
fuente
arp -n hostname
muestra la IP.Usar
ping
no es tan malo ya que generalmente no tienes dependencias fuertes.Aquí está la función que utilicé en los sistemas Linux:
fuente
fuente