6

2001:4860:4860::8888 のような IP アドレスがある場合

foo.ip6.arpa の形式で完全修飾ドメインを取得するにはどうすればよいですか?

編集:これまでの両方のソリューションで google-public-dns-a.google.com が得られました-おそらく逆引き DNS が間違った名前でした。このため、出力は 8.8.8.8.0...etc.ip6.arpa のようなものになると思います

4

2 に答える 2

7

dnspython を使用します。

from dns import resolver,reversename
addr=reversename.from_address("2001:4860:4860::8888")
str(resolver.query(addr,"PTR")[0])
于 2012-08-10T11:51:14.513 に答える
6

IPyは、必要な方法を提供します。

>>> from IPy import IP
>>> ip = IP('127.0.0.1')
>>> ip.reverseName()
'1.0.0.127.in-addr.arpa.'

元のIPyにはIPv6に関するいくつかのバグがありますが、IPv4とIPv6の両方で機能します。https://github.com/steffann/python-ipyでいくつかの拡張機能と修正を含むフォークを作成しました。修正が元のコードにマージされていない限り、これを使用できます。

アップデート:

もちろん、組み込みsocketモジュールを使用することもできます。

>>> import socket
>>> socket.getnameinfo(('2001:4860:4860::8888', 0), 0)
('google-public-dns-a.google.com', '0')
>>> socket.getnameinfo(('127.0.0.1', 0), 0)
('localhost', '0')

ホストとポートのタプルを指定する必要がありますが、0ポートを指定すると、ホスト名が返されます。

于 2012-08-10T17:14:14.260 に答える