Python之DNS
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python之DNS相关的知识,希望对你有一定的参考价值。
参考技术Adnspython( http://www.dnspython.org/ ) 是Python实现的一个DNS工具包,它支持几乎所有的记录类型,可以用于查询、传输并动态更新ZONE信息,同时支持TSIG(事务签名)验证消息和EDNS0(扩展DNS).在系统方面,我们可以利用其查询功能来实现DNS服务监控以及解析结果的校验,可以代替nslookup及dig等工具,轻松做到与现有平台的整合
安装
Python之DNS域名轮询业务监控
看了大神天斯的书,特此做学习笔记,实现方式略微不同是python3.5
大部分的DNS解析都是一个域名对应一个IP地址,但是通过DNS轮询可做到一个域名对应多个IP,从而实现最简单且高效的负载均衡。
1, 实现步骤
1) 实现域名的解析,获取域名所有的A记录解析IP列表
2) 对IP列表进行HTTP级别的探测
2, 代码
#!/usr/local/bin/python3.5 #-*- coding:utf-8 -*- import dns.resolver import httplib2 iplist = [] appdomain = "www.a.com" def get_iplist(domain=""): try: A = dns.resolver.query(domain,"A") except Exception as e: print("dns resolver error:" + str(e)) return for i in A.response.answer: for j in i.items: iplist.append(j.address) return True def checkip(ip): checkurl = \'http://\' + ip + ":80" getcontent = "" httplib2.socket.setdefaulttimeout(5) conn = httplib2.Http() try: resp,getcontent=conn.request(checkurl) finally: if resp[\'status\']== "200": print(ip+"[OK]") else: print(ip+"[Error]") if __name__ == "__main__": if get_iplist(appdomain) and len(iplist) > 0: for ip in iplist: checkip(ip)
结果如图
END!
以上是关于Python之DNS的主要内容,如果未能解决你的问题,请参考以下文章