Python自动化运维——DNS处理模块
Infi-chu:
http://www.cnblogs.com/Infi-chu/
模块:dnspython
功能:
- 支持所有的记录类型
- 可以用于查询、传输并动态更新ZONE信息
- 支持TSIG(事务签名)验证消息和EDNS0(扩展DNS)
安装:
wget http://www.dnspython.org/kits/1.9.4/dnspython-1.9.4.tar.gz tar -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自动化运维——系统进程管理模块
Infi-chu: http://www.cnblogs.com/Infi-chu/ 模块:psutil psutil是一个跨平台库,可以很轻松的为我们实现获取系统运行的进程和资源利用率等信息. 功能 ...
- 【目录】Python自动化运维
目录:Python自动化运维笔记 Python自动化运维 - day2 - 数据类型 Python自动化运维 - day3 - 函数part1 Python自动化运维 - day4 - 函数Part2 ...
- Python自动化运维:技术与最佳实践 PDF高清完整版|网盘下载内附地址提取码|
内容简介: <Python自动化运维:技术与最佳实践>一书在中国运维领域将有“划时代”的重要意义:一方面,这是国内第一本从纵.深和实践角度探讨Python在运维领域应用的著作:一方面本书的 ...
- python自动化运维之CMDB篇-大米哥
python自动化运维之CMDB篇 视频地址:复制这段内容后打开百度网盘手机App,操作更方便哦 链接:https://pan.baidu.com/s/1Oj_sglTi2P1CMjfMkYKwCQ ...
- python自动化运维学习第一天--day1
学习python自动化运维第一天自己总结的作业 所使用到知识:json模块,用于数据转化sys.exit 用于中断循环退出程序字符串格式化.format字典.文件打开读写with open(file, ...
- Python自动化运维 技术与最佳实践PDF高清完整版免费下载|百度云盘|Python基础教程免费电子书
点击获取提取码:7bl4 一.内容简介 <python自动化运维:技术与最佳实践>一书在中国运维领域将有"划时代"的重要意义:一方面,这是国内第一本从纵.深和实践角度探 ...
- Day1 老男孩python自动化运维课程学习笔记
2017年1月7日老男孩python自动化运维课程正式开课 第一天学习内容: 上午 1.python语言的基本介绍 python语言是一门解释型的语言,与1989年的圣诞节期间,吉多·范罗苏姆为了在阿 ...
- python自动化运维篇
1-1 Python运维-课程简介及基础 1-2 Python运维-自动化运维脚本编写 2-1 Python自动化运维-Ansible教程-Ansible介绍 2-2 Python自动化运维-Ansi ...
- Python自动化运维的职业发展道路(暂定)
Python职业发展之路 Python自动化运维工程 Python基础 Linux Shell Fabric Ansible Playbook Zabbix Saltstack Puppet Dock ...
随机推荐
- Windows 2012R2远程桌面服务简介
一.远程桌面服务概述 远程桌面服务加快并扩展了到任何设备的桌面和应用程序部署,在帮助保护关键知识产权的安全的同时提高了工作人员的工作效率,简化了法规遵从性. 远程桌面服务启用虚拟机基础结构 (VDI) ...
- Orchard Core 使用工作流处理审批和创建内容项
译自:http://www.ideliverable.com/blog/orchard-core-workflows-walkthrough-content-approval 转载请注明出处, 原文地 ...
- 如何使用Kubernetes里的NetworkPolicy
创建一个类型为NetworkPolicy的Kubernetes对象的yaml文件. 第九行的podSelector指定这个NetworkPolicy施加在哪些pod上,通过label来做pod的过滤. ...
- oozie fork join结点
oozie可以用fork和join节点进行多任务并行处理,同时fork和join也是同时出现,缺一不可. 语法: <workflow-app name="[WF-DEF-NAME]&q ...
- kahadb设计
Kahadb设计思想 简介 hakadb是activemq的持久化数据库,作为消息队列的存储,每个消息有一个消息ID,提供了对消息的快速的查找,更新,以及消息的事物支持,以及意外磬机之后的恢复.丰 ...
- ZOJ 3379 Master Spark
计算出中轴能覆盖到某个点的极角范围,最大覆盖次数即是答案. 首先把中轴和点重合,此时中轴的角度为theta = atan(y/x), 然后以原点为圆心旋转点和抛物线相交求出之间的夹角, 把x = a* ...
- Shell脚本学习之expect命令
转载:http://blog.csdn.net/leexide/article/details/17485451 目录(?)[-] 一概述 二expect的安装 一Tcl 安装 二expect 安装 ...
- CSP
CSP(Content-Security-Policy): 内容安全策略 作用: .限制资源获取 .报告资源获取越权 限制方式: .default-src限制全局 跟链接请求有关的东西,限制他 ...
- 作为PHP开发者请务必了解Composer
Composer是一个非常流行的PHP包依赖管理工具,已经取代PEAR包管理器,对于PHP开发者来说掌握Composer是必须的. 对于使用者来说Composer非常的简单,通过简单的一条命令将需要的 ...
- 2018.11.11 Java的 三大框架:Struts+Hibernate+Spring
·定义:Java三大框架主要用来做WEN应用.Struts主要负责表示层的显示: Spring利用它的IOC和AOP来处理控制业务(负责对数据库的操作): Hibernate主要是数据持久化到数据库. ...