¿Hay un módulo python que haga lo mismo que nslookup? Estoy planeando utilizar nslookup para buscar información sobre el dominio de una URL que se eliminará. Sé que puedo usar os.sys para llamar a nslookup pero me pregunto si ya hay un módulo de python para esto. ¡Gracias de antemano!módulo python para nslookup
Respuesta
Debe utilizar biblioteca de sockets http://docs.python.org/2/library/socket.html
llamada a la función del sistema no es una buena práctica en este caso.
Es necesario utilizar DNSPython
import dns.resolver
answers = dns.resolver.query('dnspython.org', 'MX')
for rdata in answers:
print 'Host', rdata.exchange, 'has preference', rdata.preference
estoy usando el siguiente código:
import socket
ip_list = []
ais = socket.getaddrinfo("www.yahoo.com",0,0,0,0)
for result in ais:
ip_list.append(result[-1][0])
ip_list = list(set(ip_list))
Tenga en cuenta que socket.getfqdn()
puede devolver el nombre calificado completo de un nombre de host. Ver: http://docs.python.org/2/library/socket.html?highlight=socket.getaddrinfo#socket.getfqdn
Por ejemplo:
python -c 'import socket; print(socket.gethostname()); print(socket.getfqdn());'
myserver
myserver.mydomain.local
Pero el resultado depende de la configuración /etc/hosts
. Si usted tiene:
$ cat /etc/hosts
127.0.0.1 myserver localhost.localdomain localhost
El resultado de socket.getfqdn()
será:
python -c 'import socket; print(socket.getfqdn());'
localhost.localdomain
Oooops! Para solucionar esto, la única solución que conozco es cambiar la /etc/hosts
de la siguiente manera:
$ cat /etc/hosts
127.0.0.1 myserver myserver.mydomain.local localhost.localdomain localhost
espero que ayude!
el problema es que socket.gethostbyname() devuelve solo una dirección IP. nslookup devuelve tantos como tiene. que utilizo:
import subprocess
process = subprocess.Popen(["nslookup", "www.google.com"], stdout=subprocess.PIPE)
output = process.communicate()[0].split('\n')
ip_arr = []
for data in output:
if 'Address' in data:
ip_arr.append(data.replace('Address: ',''))
ip_arr.pop(0)
print ip_arr
se imprimirá:
['54.230.228.101', '54.230.228.6', '54.230.228.37', '54.230.228.80', '54.230.228.41', '54.230.228.114', '54.230.228.54', '54.230.228.23']
que necesitaba para localizar a un AWS registros en la Ruta 53 utilizando CNAMES. AKA messaging.myCompany.com
a moreSpecificMessaging.myCompanyInternal.com
También uso Socket, pero es otro método bastante oculto.
import socket
addr1 = socket.gethostbyname_ex('google.com')
print(addr1)
https://docs.python.org/3/library/socket.html#socket.gethostbyname_ex
- 1. Módulo SSH para python
- 2. Módulo Python para optimización global variable múltiple
- 3. ¿Dónde encontrar el módulo win32api para Python?
- 4. Boost Python: Problemas para importar un módulo
- 5. Módulo de Python para shellquote/unshellquote?
- 6. módulo de rastreo de Python para principiantes
- 7. Python: módulo para trazar diagramas de Gantt
- 8. módulo usb de plataforma cruzada para python?
- 9. Módulo Python para el marcado wiki
- 10. Módulo de Python para plister binario
- 11. Dependencia del módulo Python
- 12. Módulo Python MySQL
- 13. python "módulo de cadena"?
- 14. módulo dinámico en Python
- 15. Módulo Python para habilitar colores ANSI para stdout en Windows?
- 16. Módulo de estantería Python pregunta
- 17. Python Clase vs. Módulo Atributos
- 18. diseño de módulo de python
- 19. Módulo Python OCR en Linux?
- 20. Desarrollo del módulo de Python
- 21. Python: ¿Ningún módulo llamado contextlib?
- 22. Captura de salida de shell nslookup con C#
- 23. descargar un módulo en Python
- 24. Python cruzada módulo de registro
- 25. dinámicamente importar módulo de Python
- 26. Instalación módulo lxml en Python
- 27. extraer un módulo Python importada
- 28. ImportError: Sin módulo denominado - Python
- 29. Python: httplib2 Módulo no encontrado
- 30. Operador de módulo en Python
Mientras verdadera y completa, esto mira hacia arriba de los sistemas locales de host/FQDN. El OP preguntó cómo buscar nombres dns externos para raspar el sitio. Todavía +1 para la información. – VooDooNOFX