35

nslookup と同じことを行う python-module はありますか? 破棄する URL のドメインに関する情報を掘り下げるために、nslookup を使用する予定です。os.sys を使用して nslookup を呼び出すことができることはわかっていますが、このための python-module が既にあるかどうか疑問に思っています。前もって感謝します!

4

9 に答える 9

47

私は次のコードを使用しています:

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

または、理解を次のように使用します。

ip_list = list({addr[-1][0] for addr in socket.getaddrinfo(name, 0, 0, 0, 0)})
于 2013-11-13T08:37:03.857 に答える
19

DNSPythonを使用する必要があります

import dns.resolver

answers = dns.resolver.query('dnspython.org', 'MX')
for rdata in answers:
    print 'Host', rdata.exchange, 'has preference', rdata.preference
于 2013-02-18T00:40:18.510 に答える
9

ソケットライブラリhttp://docs.python.org/2/library/socket.htmlを使用する必要があります

この場合、システム関数呼び出しは適切な方法ではありません。

于 2012-10-31T18:48:12.370 に答える
7

socket.getfqdn()ホスト名の完全修飾名を返すことができることに注意してください。参照: 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

おっと!それを解決するには、私が知っている唯一の解決策は、次の/etc/hostsように変更することです。

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

それが役に立てば幸い!

于 2014-02-18T10:18:39.203 に答える