dnspython hará muy bien mis búsquedas de DNS, pero ignora por completo el contenido de /etc/hosts
.
¿Existe una llamada a la biblioteca de Python que hará lo correcto? es decir, registrarse primero etc/hosts
y, de lo contrario, solo recurrir a las búsquedas de DNS?
socket.gethostbyname
, para consultas más complejas, use dnspython.Respuestas:
No estoy realmente seguro de si desea realizar búsquedas de DNS usted mismo o si solo desea la IP de un host. En caso de que desee lo último,
fuente
nscd
ynslcd
en cajas Unix puede hacer esto. También podría ser almacenado en caché por un servidor de nombres local configurado para el almacenamiento en caché (una configuración común, alguna vez. Probablemente no tanto ahora). Lamentablemente, no es una respuesta sencilla "no". Estas cosas rara vez lo son. :)La resolución de nombres normal en Python funciona bien. ¿Por qué necesitas DNSpython para eso? Uso solo socket 's
getaddrinfo
que siguen las reglas configuradas para su sistema operativo (en Debian, se deduce/etc/nsswitch.conf
:fuente
addrs = [ str(i[4][0]) for i in socket.getaddrinfo(name, 80) ]
me da la lista de ips.le ofrece una lista de las direcciones de www.example.com. (ipv4 e ipv6)
fuente
Este código funciona bien para devolver todas las direcciones IP que podrían pertenecer a un URI en particular. Dado que muchos sistemas se encuentran ahora en un entorno alojado (AWS / Akamai / etc.), los sistemas pueden devolver varias direcciones IP. La lambda fue "prestada" de @Peter Silva.
fuente
La respuesta anterior fue para Python 2. Si está usando Python 3, aquí está el código.
fuente
Encontré esta forma de expandir un nombre de host DNS RR que se expande en una lista de IP, en la lista de nombres de host de miembros:
Que, cuando lo ejecuto, enumera algunos nombres de host de 1e100.net:
fuente