Python学习笔记-DNS处理模块dnspython
DNS處理模塊dnspython
? ??dnspython是python實(shí)現(xiàn)的一個(gè)DNS工具包,它支持幾乎所有的記錄類型,可以用于查詢、傳輸并動(dòng)態(tài)更新ZONE信息,同時(shí)支持TSIG(事務(wù)簽名)驗(yàn)證消息和EDNS0(擴(kuò)展DNS)。
在系統(tǒng)管理方面,我們可以利用其查詢功能來實(shí)現(xiàn)DNS服務(wù)監(jiān)控以及解析結(jié)果的校驗(yàn),可以替代nslookup和dig等工具,輕松做到與現(xiàn)有平臺(tái)的整合。
? ? 下載dnspython模塊
[root@kurol?~]#?python3?-m?easy_install?-i?http://pypi.douban.com/simple/?dnspython????dnspython提供大量關(guān)于DNS的處理方法,最常用的是域名查詢。dnspython提供了一個(gè)DNS解析類resolver,使用它的query方法來實(shí)現(xiàn)域名的查詢功能。?
????qname參數(shù)為查詢的域名,rdtype參數(shù)用來指定RR資源。?
| A記錄 | 將主機(jī)名轉(zhuǎn)換成IP地址? |
| MX記錄 | 郵件交換記錄,定義郵件服務(wù)器的域名? |
| CNAME記錄 | 別名記錄,實(shí)現(xiàn)域名間的映射? |
| NS記錄 | 標(biāo)記區(qū)域的域名服務(wù)器及授權(quán)子域? |
| PTR記錄 | 反向解析,與A記錄相反,將IP地址轉(zhuǎn)換為主機(jī)名? |
| SOA記錄 | SOA標(biāo)記,一個(gè)起始授權(quán)區(qū)的定義 |
????常見的解析類型示例:
? ? ? ??A記錄(實(shí)現(xiàn)A記錄查詢方法源碼):??
??[root@kurol?pkg1]#?vim?dnsa.py#!/usr/bin/python3 #import?dns.resolverdomain?=?input('Please?input?an?domain:?')????#輸入域名地址 A?=?dns.resolver.query(domain,?'A')?????#指定查詢類型為A記錄 for?i?in?A.response.answer:?????#通過response.answer方法獲取查詢回應(yīng)信息???? for?j?in?i.items:???#遍歷回應(yīng)信息????????print?(j.address)[root@kurol?pkg1]#?python3?dnsa.py?Please?input?an?domain:?www.google.com93.46.8.89????? ? MX記錄(實(shí)現(xiàn)MX記錄查詢方法源碼):
[root@kurol?pkg1]#?vim?mxdns.py#!/usr/bin/python3 #import?dns.resolverdomain?=?input('Please?input?an?domain:?')?#輸入域名地址 MX?=?dns.resolver.query(domain,?'MX')?#指定查詢類型為MX記錄 for?i?in?MX:?#通過response.answer方法獲取查詢回應(yīng)信息????print?('MX?preference?=?',?i.preference,?'main?exchanger?=?',?i.exchange)[root@kurol?pkg1]#?python3?mxdns.py? Please?input?an?domain:?baidu.com MX?preference?=?20?main?exchanger?=?mx50.baidu.com. MX?preference?=?10?main?exchanger?=?mx.n.shifen.com. MX?preference?=?20?main?exchanger?=?mx1.baidu.com. MX?preference?=?20?main?exchanger?=?jpmx.baidu.com.????? ??NS記錄(實(shí)現(xiàn)NS記錄查詢方法源碼):
[root@kurol?pkg1]#?vim?nsdns.py#!/usr/bin/python3#import?dns.resolverdomain?=?input('Please?input?an?domain:?')?#輸入域名地址 ns?=?dns.resolver.query(domain,?'NS')?#指定查詢類型為NS記錄 for?i?in?ns.response.answer:?#通過response.answer方法獲取查詢回應(yīng)信息???? for?j?in?i.items:?#遍歷回應(yīng)信息????????print?(j.to_text())[root@kurol?pkg1]#?python3?nsdns.py? Please?input?an?domain:?qq.comn s3.qq.com. ns4.qq.com. ns1.qq.com. ns2.qq.com.????? ??CNAME記錄(實(shí)現(xiàn)CNAME記錄查詢方法源碼):
[root@kurol?pkg1]#?vim?cnamedns.py#!/usr/bin/python3#import?dns.resolverdomain?=?input('Please?input?an?domain:?')?#輸入域名地址 cname?=?dns.resolver.query(domain,?'CNAME')?#指定查詢類型為CNAME記錄 for?i?in?ns.response.answer:?#通過response.answer方法獲取查詢回應(yīng)信息???? for?j?in?i.items:?#遍歷回應(yīng)信息print?(j.to_text())轉(zhuǎn)載于:https://blog.51cto.com/kurolz/1935039
總結(jié)
以上是生活随笔為你收集整理的Python学习笔记-DNS处理模块dnspython的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java8 Lamdba表达式 002
- 下一篇: css3之圆角