2012-09-06 13 views
15

nslookupと同じことをしているpythonモジュールはありますか? nslookupを使用して、廃棄するURLのドメインに関する情報を掘り起こす予定です。私はos.sysを使ってnslookupを呼び出すことができることを知っていますが、私はすでにこのためのpythonモジュールがあるかどうか疑問に思っています。 ありがとうございます!nslookupのpythonモジュール

答えて

12

あなたは、私は次のコードを使用していDNSPython

import dns.resolver 

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

を使用する必要があります。socket.getfqdn()は、ホスト名の完全修飾名を返すことができ

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

は注意を。例えばhttp://docs.python.org/2/library/socket.html?highlight=socket.getaddrinfo#socket.getfqdn

:参照してください

python -c 'import socket; print(socket.gethostname()); print(socket.getfqdn());' 
myserver 
myserver.mydomain.local 

しかし、結果は/etc/hosts設定を依存しています。あなたが持っている場合:

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

socket.getfqdn()の結果は以下のようになります。

python -c 'import socket; print(socket.getfqdn());' 
localhost.localdomain 

Oooops!それを解決するために、私が知っている唯一の解決策は、以下のよう/etc/hostsを変更することです:

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

はそれが役に立てば幸い!

+0

真と徹底し、これは、ローカルシステムのホスト名/ FQDNを見上げながら。 OPはサイトスクレイピングのために外部DNS名を調べる方法を尋ねた。まだ情報の+1。 – VooDooNOFX

5

問題は、socket.gethostbyname()がただ1つの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 

それが印刷されます:

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

を私はのCNAMEを使用してAWSルート53のレコードを追跡する必要がありました。 AKA messaging.myCompany.commoreSpecificMessaging.myCompanyInternal.com

また、私はソケットを使用しますが、もう少し隠された方法です。

import socket 

addr1 = socket.gethostbyname_ex('google.com') 

print(addr1) 

https://docs.python.org/3/library/socket.html#socket.gethostbyname_ex