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 を印刷すると、すべての IP に dns.reversename.from_address() が気に入らない改行 \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 に答える