【问题标题】:Reverse DNS lookup in PythonPython中的反向DNS查找
【发布时间】:2012-08-07 17:12:39
【问题描述】:

如果我有一个像 2001:4860:4860::8888 这样的 IP 地址

如何获得格式为 foo.ip6.arpa 的完全限定域?

编辑:到目前为止,这两种解决方案都给了我 google-public-dns-a.google.com - 也许反向 DNS 是错误的名称。为此,我希望输出类似于 8.8.8.8.0...etc.ip6.arpa

【问题讨论】:

  • 尽管问题已编辑,但答案对我来说是正确的。但是没有标准模块能够返回.ip6.arpa 格式吗?

标签: python ipv6


【解决方案1】:

使用 dnspython。

from dns import resolver,reversename
addr=reversename.from_address("2001:4860:4860::8888")
str(resolver.query(addr,"PTR")[0])

【讨论】:

    【解决方案2】:

    IPy 提供你想要的方法:

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

    适用于 IPv4 和 IPv6,尽管最初的 IPy 对 IPv6 有一些错误。我在https://github.com/steffann/python-ipy 创建了一个带有一些扩展和修复的fork,只要修复没有合并回原始代码,您就可以使用它。

    更新:

    当然你也可以使用内置的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,你会得到主机名。

    【讨论】:

      猜你喜欢
      • 2021-07-08
      • 2015-09-27
      • 1970-01-01
      • 1970-01-01
      • 2012-08-12
      • 2016-09-24
      • 2013-10-10
      • 1970-01-01
      • 2012-04-15
      相关资源
      最近更新 更多