2016-07-04 15 views
0

Ich versuche Hosts zu lösen mit Socket-Modul via GUI habe ich Tkinter mit hier Teil des Codes ist, ist das Hauptproblem die Fehler, die ich erhalten, während Lösung Router nennenPython 3 - tkinter, ignorieren socket.herror und weiter

for line in p.stdout: 
      fiw = open("1.txt", '+a') 
      line = str(line) 
      if "Received = 1" in line: 
       hostad = socket.gethostbyaddr(ip3 +str(i)) 
       if hostad: 
        try: 
         print(hostad) 
        except socket.herror: 
         print(hostad) 
       fiw.write("Received reply from " + ip3 +str(i)+"\n") 
       print("Received reply from " + ip3 +str(i)+"\n") 
       print(socket.gethostbyaddr(ip3 +str(i))) 

der Fehler:

socket.herror: [Errno 11004] host not found 

Skript i print hier verwendet wird, nicht weiter ausgeführt werden soll nur beispielsweise auch versucht i pass versucht

except socket.herror as err: 
       print(err) 
       pass 

versuchte auch nur pass in diesem Verfahren unter Verwendung von

Antwort

0

Sie versuchen, haben ... außer um den falschen t Hing, anstelle von

hostad = socket.gethostbyaddr(ip3 +str(i)) 
if hostad: 
    try: 
     print(hostad) 
    except socket.herror: 
     print(hostad) 

sollte es

try: 
    hostad = socket.gethostbyaddr(ip3 +str(i)) 
    print(hostad) 
except socket.herror: 
    pass # code to execute in case of error 

sich der Fehler wie sein Meldung "DNS Lookup Failure Rückwärts" in Python Sockets: gethostbyaddr : Reverse DNS Lookup Failure wie erläutert bezieht

Wenn der Hostname in Linie gebildet

hostad = socket.gethostbyaddr(ip3 +str(i)) 

hat keinen umgekehrten DNS-Eintrag, die Ausnahme wird ausgelöst.

+0

Ich bekomme den gleichen Fehler – None

+0

Kennen Sie andere Lösung, um Geräteversion/Name, wie nmap zu bekommen? – None

-2

ich denke, dass Sie einen Blick auf diese thread

eine Ausnahme wie ein Bruchstelle ist nehmen sollte, bricht es Ihre for-Schleife ..

versuchen, es wie folgt aus:

for line in p.stdout: 
    try: 
     fiw = open("1.txt", '+a') 
     line = str(line) 
     if "Received = 1" in line: 
      hostad = socket.gethostbyaddr(ip3 +str(i)) 
      if hostad: 
       try: 
        print(hostad) 
       except socket.herror: 
        print(hostad) 
      fiw.write("Received reply from " + ip3 +str(i)+"\n") 
      print("Received reply from " + ip3 +str(i)+"\n") 
      print(socket.gethostbyaddr(ip3 +str(i))) 
    except: 
      pass 
+0

Der 'innere Versuch ... außer' ist ziemlich sinnlos,' print' wirft niemals 'sockle.scherror'. Das äußere "try ... except" fängt jede Ausnahme ein, die normalerweise eine schlechte Übung ist. –

+0

danke für die Eingabe! Ich wusste das nicht :) –