我正在尝试用python自动化一些任务。如果某些域仍在我们的DNS服务器中,我必须检查。所以在堆栈中搜索时,我找到了带有dns.resolver的脚本,并试图使其适合我的需要。 因此,脚本如下所示:
import socket
import dns.resolver
mylist=[]
with open('domainfile.txt') as file:
for line in file:
mylist.append(line)
length = len(mylist)
resolver = dns.resolver.Resolver()
resolver.nameservers=[socket.gethostbyname('dns.example.com')]
for i in range(length):
for rdata in resolver.query(mylist[i], 'CNAME') :
print(rdata.target)
我的domainfile.txt
看起来像这样:
domain1
domain2
domain3
[...]
我收到的错误消息是:
Traceback (most recent call last): File "dnspython.py", line 20, in for rdata in resolver.query(lista[i], 'CNAME') : File "/usr/local/lib/python3.7/dist-packages/dns/resolver.py", line 1053, in query raise_on_no_answer) File "/usr/local/lib/python3.7/dist-packages/dns/resolver.py", line 236, in init raise NoAnswer(response=response) dns.resolver.NoAnswer: The DNS response does not contain an answer to the question: domain1\010.example.com. IN CNAME
如果我只是在If语句中插入我的域,而不是遍历mylist我就得到了我所需要的。但是,当我试图通过列表执行此操作时,它将添加到我的域\010,然后什么也没有发生。 你能帮我吗? 谢谢
根据文件,这似乎是意料之中的:http://www.dnspython.org/docs/1.14.0/dns.resolver.Resolver-class.html#query
发生这种情况的原因可能是因为您没有从域中删除行尾
我会这样做的
相关问题 更多 >
编程相关推荐