I am trying to query reverse lookups in dnspython. Unfortunately, the from_address() function does not let me hand over a IP by variable. Any ideas why?
#!/usr/bin/env python
import dns.resolver,dns.reversename
with open("test", "r") as ips:
for ip in ips:
ip = str(ip)
n = dns.reversename.from_address(ip)
print str(dns.resolver.query(n,"PTR")[0])
I am new to python; would be great if somebody could help out!
答案 0 :(得分:1)
我真的怀疑你还在研究这个问题,但是如果你打印出每个IP,你会发现每个ip都有一个换行符\ n dns.reversename.from_address()不喜欢:
192.168.1.1
192.168.1.2
192.168.1.3
这会导致异常:
dns.exception.SyntaxError: Text input is malformed.
您可以轻松更改该行:
ip = str(ip)
为:
ip = str(ip).strip()
它将删除所有空格(在格式良好的IP地址列表中应该没有空格,这样就可以了:
192.168.1.1
192.168.1.2
192.168.1.3
如果您遇到相同的文本格式异常,并且您的IP地址格式正确,这可以解决您的问题。对不起,我迟到了2年,我偶然发现了谷歌搜索dns.reversename.from_address()。如果您的IP列表格式不正确,您可以使用类似ippy的内容来过滤掉您的不良内容。