最近在看劉天斯的python自動化運維,按照劉老師的思路,記錄一個dns輪詢以及服務檢測的粟子,作爲學習筆記。
#!/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]