1

我正在尝试在 dnspython 中查询反向查找。不幸的是,from_address() 函数不允许我通过变量交出 IP。任何想法为什么?

#!/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])

我是 python 新手;如果有人可以帮忙,那就太好了!

4

1 回答 1

2

我真的怀疑您是否仍在研究此问题,但是如果您打印出每个 IP,您会发现每个 dns.reversename.from_address() 不喜欢的 ip 中都有一个换行符 \n:

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 之类的东西来过滤掉您的不良 IP。

于 2017-08-16T17:14:30.427 回答