python-module nslookup

python module - módulo de python para nslookup



python-module (7)

¿Hay algún módulo de Python que haga lo mismo que nslookup? Estoy planeando usar nslookup para obtener información sobre el dominio de una URL que se desechará. Sé que puedo usar os.sys para llamar a nslookup pero me pregunto si ya hay un módulo python para esto. ¡Gracias por adelantado!



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))


Las respuestas anteriores son correctas, pero esto es lo que usaría socket , que "proporciona acceso a la interfaz de socket BSD. Está disponible en todos los sistemas Unix modernos, Windows, MacOS y, probablemente, en plataformas adicionales".

import socket distinct_ips = [] # 0,0,0,0 is for (family, type, proto, canonname, sockaddr) #change some_site.com to whatever your are looking up of course socket_info = socket.getaddrinfo("some_site.com",0,0,0,0) for result in socket_info: ns_ip = result[4][0] if distinct_ips.count(ns_ip)==0: distinct_ips.append(ns_ip) print(ns_ip)



Necesitas usar DNSPython

import dns.resolver answers = dns.resolver.query(''dnspython.org'', ''MX'') for rdata in answers: print ''Host'', rdata.exchange, ''has preference'', rdata.preference


Tenga en cuenta que socket.getfqdn() puede devolver el nombre completo de un nombre de host. Consulte: 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 de /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 resolverlo, la única solución que conozco es cambiar el /etc/hosts siguiente manera:

$ cat /etc/hosts 127.0.0.1 myserver myserver.mydomain.local localhost.localdomain localhost

¡Espero eso ayude!


el problema es que socket.gethostbyname () devuelve solo una dirección ip. nslookup devuelve tantos como tiene. Yo suelo:

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'']