DNSpython 是否有一种方法可以根据传递的值自动执行正向或反向查找?
Does DNSpython have a method that automatically performs a forward or reverse lookup depending on the value that it's passed?
我想知道是否有办法将主机、fqdn 或 IP 地址传递给 DNSPython 并让它执行正确的查找(主机和 fqdns 的转发和 ips 的反向)。另外,我想知道最初发送给该方法的地址类型(主机、fqdn 或 ip)。
提前致谢
据我所知,没有一个函数可以满足您的需求。但是,实施起来并不难。我可能会这样做。
首先,我会检查输入的是否是 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 中使用搜索的值,您可以考虑创建一个 dns.resolver.Resolver
,它目前默认进行搜索处理。
import dns.resolver
import dns.rdatatype
resolver = dns.resolver.Resolver()
response = resolver.query('my-computer', dns.rdatatype.A)
我想知道是否有办法将主机、fqdn 或 IP 地址传递给 DNSPython 并让它执行正确的查找(主机和 fqdns 的转发和 ips 的反向)。另外,我想知道最初发送给该方法的地址类型(主机、fqdn 或 ip)。
提前致谢
据我所知,没有一个函数可以满足您的需求。但是,实施起来并不难。我可能会这样做。
首先,我会检查输入的是否是 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 中使用搜索的值,您可以考虑创建一个 dns.resolver.Resolver
,它目前默认进行搜索处理。
import dns.resolver
import dns.rdatatype
resolver = dns.resolver.Resolver()
response = resolver.query('my-computer', dns.rdatatype.A)