1

我想知道是否有办法将主机、fqdn 或 IP 地址传递给 DNSPython,并让它执行正确的查找(主机和 fqdns 转发,ips 反向)。另外,我想知道最初向该方法发送了什么样的地址(主机、fqdn 或 ip)。

提前致谢

4

1 回答 1

2

据我所知,没有一个函数可以满足您的需求。但是,实施起来不会太难。这就是我可能会这样做的方式。

首先,我会检查输入是否是 IP 地址

import ipaddress

def is_ipaddress(string):
    try:
        ipaddress.ip_address(string)
        return True
    except ValueError:
        return False

如果是 IP 地址,我会调用dns.query.reverse_query(). 这是假设我已经从 Github 安装了最新的 dnspython 开发版本,因为reverse_query()它是最近才添加的(参见https://github.com/rthalley/dnspython/commit/7c105cce64699e1a221176f98f7cb9e682aba1e0)。

如果它不是 IP 地址,那么我会准备我的查询,dns.message.make_query(name, rdtype)然后用dns.query.udp().

如果你想在 /etc/reolv.conf 中使用 search 的值,你可以考虑创建一个 dns.resolver.Resolver,它目前默认进行搜索处理。

import dns.resolver
import dns.rdatatype

resolver = dns.resolver.Resolver()
response = resolver.query('my-computer', dns.rdatatype.A)
于 2020-04-17T05:36:00.083 回答