Python自动化运维——DNS处理模块
生活随笔
收集整理的這篇文章主要介紹了
Python自动化运维——DNS处理模块
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
模塊:dnspython
功能:
- 支持所有的記錄類型
- 可以用于查詢、傳輸并動態更新ZONE信息
- 支持TSIG(事務簽名)驗證消息和EDNS0(擴展DNS)
安裝:
wget http://www.dnspython.org/kits/1.9.4/dnspython-1.9.4.tar.gztar -zxvf dnspython-1.9.4.tar.gz cd dnspython-1.9.4 python setup.py install模塊域名解析方法:
dnspython提供一個DNS解析器類——resolver,使用query()方法來實現域名的查詢功能
Query()方法使用:
#import dns.resolver#query(self,qname,rdtype=1,rdclass=1,tcp=False,source=None,raise_on_no_answer=True,source_port=0)qname為查詢的域名。
rdtype用來指定RR資源的類型,常用的有如下幾種:
- A記錄,將主機名轉換成IP地址
- MX記錄,郵件交換記錄,用于定義郵件服務器的域名
- CNAME記錄,別名記錄,實現域名間的映射
- NS記錄,標記區域的域名服務器及授權子域
- PTR記錄,反向解析,與A記錄相反,將IP轉換成主機名
- SOA記錄,SOA標記,一個起始授權區的定義
rdclass用于指定網絡類型,可選的值有:
- IN,默認為IN
- CH,
- HS,
tcp用于指定查詢是否啟用TCP協議
source和source_port指定查詢源地址與端口,默認查詢設備IP和0
raise_on_no_answer用于指定當查詢無應答時,是否觸發異常,默認為True
A記錄查詢方法:
#import dns.resolver#dom=raw_input('輸入域名地址:')#A=dns.resolver.query(dom,'A') # 指定查詢類型為A的記錄#for a in A.response.answer: # 通過response.answer方法獲取查詢回應信息# for b in a.items: # 遍歷回應信息# print(b.address)MX記錄查詢方法:
#import dns.resolver#dom=raw_input('輸入域名地址:')#MX=dns.resolver.query(dom,'MX')#for a in MX:# print('MX 優先權:',a.preference,'mail 交換器:',a.exchange)NS記錄查詢方法:
#import dns.resolver#dom=raw_input('輸入一級域名地址:')#NS=dns.resolver.query(dom,'NS')#for a in NS.respinse.answer:# for b in a.items:# print(b.to_text())CNAME記錄查詢方法:
#import dns.resolver#dom=raw_input('輸入域名地址:')#cname=dns.resolver.query(dom,'CNAME')#for a in cname.response.answer:# for b in a.items:# print(b.to_text())DNS域名輪詢業務監控:
步驟:
- 實現域名的解析,獲取域名所有的A記錄解析IP列表
- 對IP列表進行HTTP級別的探測
實現:
#import dns.resolver#import os#import httplib#ip_list=[] # 定義域名的IP列表#dom=raw_input('輸入域名:')#def get_ip_list(dom=''):# try:# A=dns.resolver.query(dom,'A') #解析A記錄類型# except Exception,e:# print('DNS解析錯誤:',str(e))# return# for a in A.response.answer:# for b in a.items:# ip_list.append(b.address) # 添加到IP列表#def checkip(ip):# checkurl=ip+':80'# getcontent=''# httplib.socket.setdefaulttimeout(10) # 定義http連接超時時間,10s# conn=httplib.HTTPConnection(checkurl) # 創建http連接對象# try:# conn.request('GET','/',headers={'HOST':dom}) # 發起URL請求,添加host主機頭# r=conn.getresponse()# getcontent=r.read(15) # 獲取URL頁面前的15個字符,以便做可用性校驗# finally:# if getcontent=='<!doctype html>': # 監控URL頁的內容一般是事先定義好的# print(ip+'[OK]')# else:# print(ip+'[error]')#if __name__="__main__":# if get_ip_list(dom) and len(ip_list)>0: #域名解析正確,且IP列表有數據# for a in ip_list:# print(a)# else:# print('DNS 解析錯誤')總結
以上是生活随笔為你收集整理的Python自动化运维——DNS处理模块的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python自动化运维——IP地址处理模
- 下一篇: Python自动化运维——文件内容差异对