最近在看刘天斯的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]