【问题标题】:Python: DNS Query: Pydns? Dig? Socket?Python:DNS 查询:Pydns?挖?插座?
【发布时间】:2012-04-13 22:13:33
【问题描述】:

我正在尝试编写一个 python 脚本,它将接收一系列主机名的命令行参数并执行 dns 查询。如果查询成功,则不会发生任何事情,否则将抛出异常。这是我到目前为止所拥有的:

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

【问题讨论】:

    标签: python command-line dns


    【解决方案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()
    

    【讨论】:

    • 似乎不起作用,它在以下过程中出错: print("{} 解析为 {}".format(host, ip))
    • 为我工作(32 位 Python 2.7.2) - 您正在运行什么版本,您收到什么错误消息?如果是 2.6 或更早版本,可能必须将格式字符串替换为“{0} 解析为 {1}”以使其正确执行替换。
    • 谢谢,我更新了文件,脚本运行正常。谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-19
    • 2011-07-09
    相关资源
    最近更新 更多