2012-04-13 9 views
-1

Ich versuche, ein Python-Skript zu schreiben, das eine Reihe von Befehlszeilenargumenten von Hostnamen aufnehmen und eine DNS-Abfrage durchführen wird. Wenn die Abfrage erfolgreich ist, wird nichts passieren, sonst wird eine Ausnahme ausgelöst. Hier ist, was ich bisher:Python: DNS-Abfrage: Pydns? Graben? Steckdose?

#!/usr/bin/env python 

    import socket 
    import sys, os 
    import DNS 

    if len(sys.argv) <=3: 
     print >>sys.stderr, 'usage:DnsCheck <hostname> <hostname> <hostname>' 
     sys.exit(2) 
    args = str(sys.argv[1:]) 
    command = "dig " + args 

    def main(args): 
     try: 
     for i in args: 
     #socket.gethostbyname(i) 
     os.popen(command) 
    except socket.error, e: 
     print e 

    if __name__ == '__main__': 
     main(args) 

Antwort

1
import socket 
import sys 

def main(): 
    if len(sys.argv) < 2: 
     print("Usage: dnscheck hostname [hostname...]") 
    else: 
     for host in sys.argv[1:]: 
      try: 
       ip = socket.gethostbyname(host) 
       print("{} resolves to {}".format(host, ip)) 
      except socket.gaierror: 
       print("Could not resolve {}".format(host)) 

if __name__=="__main__": 
    main() 
+0

nicht zu funktionieren scheint, ist es erros im: print ("{} löst auf {}" -Format (Host, ip).) – user1330602

+0

Werke Ich (32-Bit Python 2.7.2) - welche Version laufen Sie, und welche Fehlermeldung erhalten Sie? Wenn 2.6 oder vorher, muss die Formatzeichenfolge möglicherweise durch "{0} aufgelöst zu {1}" ersetzt werden, damit es die Ersetzung ordnungsgemäß durchführt. –

+0

Danke, ich habe die Datei aktualisiert und das Skript läuft korrekt. Vielen Dank. – user1330602

Verwandte Themen