最近在看刘天斯的python自动化运维,按照刘老师的思路,记录一个dns轮询以及服务检测的粟子,作为学习笔记。
代码语言:javascript
复制
#!/usr/bin/env python import dns.resolver import os import httplib iplist = [ ] //定义一个空列表,用于存放解析得到的IP地址 appdomain = "www.baidu.com" //定义业务域名 def get_iplist(domain=""): //建立一个获取DNS解析后的IP地址函数方法 try: A = dns.resolver.query(domain, 'A') //解析域名的A记录 except Exception,e: print "dns resolver error:"+str(e) return for i in A.response.answer: //解析出A记录对应的地址 for j in i.items: iplist.append(j.address) //将获取到的地址加入列表 return True def checkip(ip): checkurl=ip+":80" //检查ip服务器的80端口服务是否正常 httplib.socket.setdefaulttimeout(5) //定义http链接超时时间为5秒 conn=httplib.HTTPConnection(checkurl) //创建http链接对象 try: conn.request("GET","/",headers = {"Host": appdomain}) //发起url请求,添加 主机头 r=conn.getresponse() getcontent = r.read(15) //获取URL页面前15个字符,以便做可用性校验 finally: if getcontent=="<!doctype html>": //监控URL页的内容一般是事先定义好的 print ip+" [OK]" // HTTP 200状态 else: print ip+" [Error]" if __name__=="__main__": if get_iplist(appdomain) and len(iplist) >0: //条件,域名解析 至少返回一个IP for ip in iplist: checkip(ip) else: print "dns resolver error." 运行result:
14.215.177.37 [OK]