jay*_*yde 24 nslookup python-module
是否有一个python模块与nslookup做同样的事情?我打算使用nslookup挖掘有关要废弃的URL域的一些信息.我知道我可以使用os.sys来调用nslookup,但我只是想知道是否已经有了这个python模块.提前致谢!
小智 24
我正在使用以下代码:
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))
Run Code Online (Sandbox Code Playgroud)
Exo*_*xos 16
您需要使用DNSPython
import dns.resolver
answers = dns.resolver.query('dnspython.org', 'MX')
for rdata in answers:
print 'Host', rdata.exchange, 'has preference', rdata.preference
Run Code Online (Sandbox Code Playgroud)
问题是socket.gethostbyname()只返回一个ip-address.nslookup返回尽可能多的内容.我用:
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
Run Code Online (Sandbox Code Playgroud)
它将打印:
['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']
Run Code Online (Sandbox Code Playgroud)
小智 6
我需要使用 CNames 跟踪 AWS Route 53 中的 A 记录。AKAmessaging.myCompany.com到moreSpecificMessaging.myCompanyInternal.com
我也使用 Socket,但另一种相当隐蔽的方法。
import socket
addr1 = socket.gethostbyname_ex('google.com')
print(addr1)
Run Code Online (Sandbox Code Playgroud)
https://docs.python.org/3/library/socket.html#socket.gethostbyname_ex
请注意,socket.getfqdn()可以返回主机名的完全限定名称.请参阅:http://docs.python.org/2/library/socket.html?highlightlight = socket.getaddrinfo#socket.getfqdn
例如:
python -c 'import socket; print(socket.gethostname()); print(socket.getfqdn());'
myserver
myserver.mydomain.local
Run Code Online (Sandbox Code Playgroud)
但结果取决于/etc/hosts配置.如果你有:
$ cat /etc/hosts
127.0.0.1 myserver localhost.localdomain localhost
Run Code Online (Sandbox Code Playgroud)
结果socket.getfqdn()将是:
python -c 'import socket; print(socket.getfqdn());'
localhost.localdomain
Run Code Online (Sandbox Code Playgroud)
Oooops!要解决这个问题,我所知道的唯一解决方案是改变/etc/hosts如下:
$ cat /etc/hosts
127.0.0.1 myserver myserver.mydomain.local localhost.localdomain localhost
Run Code Online (Sandbox Code Playgroud)
希望能帮助到你!