python -- DNS处理模块dnspython
简介
dnspython – 是python实现的一个DNS工具包,利用其查询功能来实现dns的服务监控及解析结果的校验
安装dnspython
- pip install dnspython
使用
常见的DNS解析类型包括A、MX、NS、CNAME
(1)A记录的查询,实例如下:
- import dns.resolver
- domain = raw_input('Please input an domain: ')
- A = dns.resolver.query(domain, 'A')
- for i in A.response.answer:
- for j in i.items:
- print j.address
运行输入:www.baidu.com,输出结果如下:
(2)MX记录
- domain = raw_input('Please input an domain: ')
- MX = dns.resolver.query(domain, 'MX')
- for i in MX:
- print 'MX preference =', i.preference, 'mail exchanger =', i.exchange
运行输入:163.com,输出结果如下:
(3)NS记录
- print '*************NS****************'
- domain = raw_input('Please input an domain: ')
- ns = dns.resolver.query(domain, 'NS')
- for i in ns.response.answer:
- for j in i.items:
- print j.to_text()
输入:baidu.com,输出结果如下:
注意:只限输入一级域名,若输入www.baidu.com是错误的
(4)CNAME记录
- print '****************CNAME****************'
- domain = raw_input('Please input an domain: ')
- cname = dns.resolver.query(domain, 'CNAME')
- for i in cname.response.answer:
- for j in i.items:
- print j.to_text()
输入:www.baidu.com,输出结果如下:
一个综合的例子:
- import dns.resolver
- import httplib
- iplist = [] # 定义域名IP列表变量
- # appdomain = "www.google.com.hk" # 定义业务域名
- appdomain = "www.baidu.com" # 定义业务域名
- # 域名解析函数,解析成功IP将追加到iplist
- def get_iplist(domain=""):
- try:
- A = dns.resolver.query(domain, 'A') # 解析A记录类型
- except Exception, e:
- print "dns resolver error:" + str(e)
- return
- for i in A.response.answer:
- for j in i.items:
- iplist.append(j.address) # 追加到iplist
- return True
- def checkip(ip):
- checkurl = ip + ":80"
- getcontent = ""
- httplib.socket.setdefaulttimeout(5) # 定义http连接超时时间(5秒)
- conn = httplib.HTTPConnection(checkurl) # 创建http连接对象
- try:
- conn.request("GET", "/", headers={"Host": appdomain}) # 发起URL请求,添加host主机头
- r = conn.getresponse()
- getcontent = r.read(15) # 获取URL页面前15个字符,以便做可用性校验
- finally:
- if getcontent.lower() == "<!doctype html>": # 监控URL页的内容一般是事先定义好,比如“HTTP200”等
- print ip + " [OK]"
- 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."
python -- DNS处理模块dnspython的更多相关文章
- python自动化运维笔记3 —— dns处理模块dnspython
1.3 DNS处理模块 dnspython是python实现的一个DNS工具包,它支持几乎所有的记录类型,可以用于查询.传输并动态更新ZONE信息,同时支持TSIG(事物签名)验证消息和EDNS0(扩 ...
- python运维开发常用模块(三)DNS处理模块dnspython
1.dnspython模块介绍: dnspython(http://www.dnspython.org/)是Python实现的一个DNS 工具包,它支持几乎所有的记录类型,可以用于查询.传输并动态更新 ...
- DNS处理模块dnspython
一.介绍 官网:http://www.dnspython.org/ https://pypi.org/project/dnspython/ dnspython是Python的DNS工具包.它支持几乎所 ...
- DNS 处理模块 dnspython
简介: dnspython (http://www.dnspython.org/)是Python实现一个DNS的工具包,支持所有的记录类型,可以用于查询.传输并动态更新ZONE信息. 安装 wget ...
- python已安装了DNS处理模块,执行时却报错ImportError
一.代码: #!/usr/bin/python import dns.resolver ............此处省略 二.故障报错 ubuntu:~/automation/001_base$ py ...
- python之platform模块
python之platform模块 ^_^第三个模块从天而降喽!! 函数列表 platform.system() 获取操作系统类型,windows.linux等 platform.platform() ...
- python之OS模块详解
python之OS模块详解 ^_^,步入第二个模块世界----->OS 常见函数列表 os.sep:取代操作系统特定的路径分隔符 os.name:指示你正在使用的工作平台.比如对于Windows ...
- python之sys模块详解
python之sys模块详解 sys模块功能多,我们这里介绍一些比较实用的功能,相信你会喜欢的,和我一起走进python的模块吧! sys模块的常见函数列表 sys.argv: 实现从程序外部向程序传 ...
- 学习PYTHON之路, DAY 6 - PYTHON 基础 6 (模块)
一 安装,导入模块 安装: pip3 install 模块名称 导入: import module from module.xx.xx import xx from module.xx.xx impo ...
随机推荐
- springboot autoconfig
springboot自动配置的核心思想是:springboot通过spring.factories能把main方法所在类路径以外的bean自动加载 springboot starter验证 我在spr ...
- message() 信息提示
//样式部分 .message { position: fixed;top: -100px;width: 400px;left: 50%;margin-left: -200px;z-index: 10 ...
- Ping 命令的执行过程和应用协议
1. ICMP是“Internet Control Message Ptotocol”的缩写.它是TCP/IP协议族的一个子协议,用于在IP主机.路由器之间传递控制消息. 控制消息是指网络通不通.主机 ...
- python--以1-31的数字作为结尾的列表?论英文好的重要性!
一.python基础教程第2板(修订版)[代码清单2-1]中有一段要求打印‘以1-31的数字作为结尾的列表’ 截取代码示例:endings =['st','nd','rd'] +17*['th'] + ...
- 在VUE中,关于CKEditor使用
官方文档 语言配置 代码如下 ClassicEditor .create( document.querySelector( '#editor' ), { language: 'de' // 配置语言 ...
- Linux 常用命令(三)
一.less --分页查看文件:方面查阅(编辑)大文件 说明:支持方向键盘和鼠标向上向下浏览 -N 显示行号 二.head --output the first part of files 默认显示 ...
- vscode设置让鼠标滚动改变字体大小
打开settings.json文件 输入"editor.mouseWheelZoom": true, 这样比较方面,比默认的放大缩小来的快捷
- ACM 深度优化搜索算法小总结
深度优化搜索算法的本质:就是从一状态不断转移,如果无法转移了就需要返回上一个状态,知道找到解为止. 其核心:递归函数 基本模型: dfs(int i, int j) { //控制结束条件 //进行状态 ...
- Monkeyrunner 简介及其环境搭建
Monkeyrunner是通过坐标.控件ID和控件上的文字操作应用的界面元素,其测试用例是用python写的,这样就弥补了monkey只有简单命令无法执行复杂用例的缺陷.Monkeyrunner采用的 ...
- Linux和 Mac下git pull/push 免输入密码和账号
linux下面可以直接创建.git-credential文件,命令如下: 创建文件,进入文件,输入内容: cd ~ touch .git-credentials vim .git-credential ...