nslookup的python模块

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)


Séb*_*ien 9

您应该使用套接字库http://docs.python.org/2/library/socket.html

在这种情况下,系统函数调用不是一个好习惯.


use*_*ame 7

问题是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.commoreSpecificMessaging.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


Lau*_*RTE 5

请注意,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)

希望能帮助到你!