我正在学习如何使用python dns对象。快速问题因为我看到许多示例显示了将dns.resolver方法与DNS记录类型(CNAME、NS等)一起使用的方法。有没有一种方法可以使用这个dns对象来查询DNS名称并提取其记录类型的解析。类似于答案部分中提供的DIG。
谢谢,
吉姆
发布于 2017-07-12 06:41:02
您可以使用rdatatype获取类型
>>> import dns.resolver
>>> answer = dns.resolver.query('google.com')
>>> rdt = dns.rdatatype.to_text(answer.rdtype)
>>> print(rdt)
A发布于 2013-10-05 13:59:33
以下是CNAME的一个示例:
>>> cname = dns.resolver.query("mail.unixy.net", 'CNAME')
>>> for i in cname.response.answer:
... for j in i.items:
... print j.to_text()
...
unixy.net.TXT:
>>> txt = dns.resolver.query("unixy.net", 'TXT')
>>> for i in txt.response.answer:
... for j in i.items:
... print j.to_text()
...
"v=spf1 ip4:..."NS:
>>> ns = dns.resolver.query("unixy.net", 'NS')
>>> for i in ns.response.answer:
... for j in i.items:
... print j.to_text()
...
ns2.unixy.net.
ns1.unixy.net.您可以获得遵循相同模式的大多数记录。多个响应查询存储在一个列表中。所以有时循环是必要的(例如:多个A和NS recs)。
发布于 2014-01-29 00:05:24
到目前为止,我找到的确定它是A还是CNAME答案的唯一检查是测试qname属性是否等于canonical_name属性。
answer = dns.resolver.query('www.example.com')
if answer.qname == answer.canonical_name:
print "This is A record"
else:
print "This isn't A, probably CNAME..."https://stackoverflow.com/questions/5903097
复制相似问题