2016-11-29 24 views
1

ホスト名のリストのIPアドレスを取得するための小さなスクリプトを書きました。しかし、私はIPアドレスをpingしようとすると、私は要求のタイムアウトを取得します。なぜこれが起こるのですか?Python socket.gethostbyname関数はIPアドレスを返しますが、pingできません

import csv 
import socket 

path = 'Clients.csv' 

with open(path) as fopen: 
    rows = csv.reader(fopen) 
    for row in rows: 
     try: 
      resp = socket.gethostbyname(row[0]) 
      print(row[0], resp) 
     except: 
      continue 

答えて

4

答えは質問です:あなたが要求しているDNSサーバが名前を知っているので、それはあなたに一致するIPを与えます。

pingを実行しているマシンが実際に宛先にpingを実行するためのネットワークパスを見つけることはできません。たとえば、発信されたサーバとpingされたサーバの間にファイアウォールが存在し、送信元と宛先の間のネットワークが必ずしも一緒にルーティングされるとは限りません。

タイムアウトはおそらくブロックするファイアウォールの兆候です。

+1

使用されているDNSサーバは、スクリプトが実行されているマシンのネットワークインターフェイスに設定されているDNSサーバになりますか? – jes516

+0

はOSによって異なります。 Linuxや一般的なBSDでは、おそらく '/ etc/resolv.conf'で指定されたネームサーバになります。より一般的にはPOSIXシステムで '/ etc/nsswitch.conf'は' gethostbyname'がどこから回答を得るかを指示します。 –

関連する問題