1

IP をホスト名に解決するスクリプトを作成しました。スクリプトはホスト名を解決せず、次のエラーが発生します。

ホスト名を解決できません: 10.10.10.10 [Errno 11004] getaddrinfo に失敗しました ホスト名を解決できません: 10.10.10.10 [Errno 11004] getaddrinfo に失敗しました

提案してください。私はpythonが初めてです。テキスト ファイルには 1000 を超える IP が含まれています。

#!/usr/bin/python
import socket
pfile = open ('C:\\Python27\\scripts\\test.txt')
while True:
    IP = pfile.readline()
    if not IP:
        break
    try:
        host = socket.gethostbyaddr("IP")
        print host, IP
    except socket.gaierror, err:
        print "cannot resolve hostname: ", IP, err
pfile.close()
4

4 に答える 4

4

ここには 2 つの問題があります。

まず、 FatalError が指摘したように、IP変数の値ではなく string を検索しています"IP"

2 つ目は、文字列pfile.readline()の最後に末尾の改行を残すため、IP引き続き失敗します。

そう:

host = socket.gethostbyaddr(IP.rstrip())

また、一部のプラットフォームでは、DNS が機能していないgethostbyaddr場合、IP アドレスを指定しても失敗します。そのため、スクリプトを実行しているマシンで簡単なテストを実行することをお勧めします (SO に既に使用しているマシンと同じでない場合)。たとえば、ブラウザーを開いて Google にアクセスします。

于 2013-09-26T19:58:18.003 に答える