2012-04-13 55 views
-1

我想寫一個python腳本,將採取一系列主機名命令行參數並執行dns查詢。如果查詢成功,則不會發生,否則將拋出異常。以下是我迄今爲止:Python:DNS查詢:Pydns?挖?插座?

#!/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) 

回答

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

似乎並沒有工作,期間,誤差修改:打印( 「{}解析爲{}」 格式(主機,IP)。) – user1330602 2012-04-19 01:36:22

+0

Works的我(32位Python 2.7.2) - 你在運行什麼版本,你會得到什麼錯誤信息?如果是2.6或更早版本,可能必須將格式字符串替換爲「{0}解析爲{1}」,以使其正確執行替換。 – 2012-04-19 01:41:12

+0

謝謝,我做了更新的文件和腳本正確運行。謝謝。 – user1330602 2012-04-19 01:53:29