2017-07-05 16 views
0

このコードは、ホストが見つかりませんでしたが、そのIP範囲にいくつかのホストがありますか?エラーはsocket.gethostbyaddr(ip)ですが、なぜIPアドレスでホスト名を見つけるコマンドなのか分かりません。あなたがチェックすることができ、このコードでホストが見つかりませんipscannerでipの隣にあるホスト名にエラーがあります

import subprocess 
import socket 
import os 
with open(os.devnull, "wb") as limbo: 
     for n in xrange(10, 240): 
       ip="10.4.16.{0}".format(n) 
       result=subprocess.Popen(["ping", "-n", "1", "-w", "200", ip], 
         stdout=limbo, stderr=limbo).wait() 
       if result: 
         print (ip, "inactive") 
       else: 
         print (ip, "active", socket.gethostbyaddr(ip)) 

答えて

0

すべての前に、あなたのIPアドレスはnames.otherwiseそれを示してDNSにPTRレコードを持っている必要があり、あなたがのために

アクティブか

import subprocess 
import socket 
import os 
import sys 

def lookup(addr): 
    try: 
     return socket.gethostbyaddr(addr) 
    except socket.herror: 
     return None, None, None 
with open(os.devnull, "wb") as limbo: 
    for n in xrange(10, 240): 
     ip="10.4.16.{0}".format(n) 
     if sys.platform=="linux" or sys.platform=="darwin": 
      result=os.system("ping -c 1 -t 1 " + ip+ " > /dev/null 2>&1") 
     else: 
      result=os.system("ping -w 1000 -n 1 " + ip) 

     if result==0: 
      print (ip, "active") 
      name,alias,addresslist = lookup(ip) 
      if name != None: 
       print ("name", name) 
     else: 
      print (ip, "inactive") 
     print "#################################"  
+0

おかげで情報 –

+0

私はそれを試しましたが、ホスト名より多くの出力を与えています。ホスト名を取得するために何かを提案することができます –

+0

10.4.16.137の後にsocket.herrorホストが見つからないというエラーが表示されます –

関連する問題