2012-04-13 30 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