Infi-chu:

http://www.cnblogs.com/Infi-chu/

模块:dnspython

功能:

  1. 支持所有的记录类型
  2. 可以用于查询、传输并动态更新ZONE信息
  3. 支持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资源的类型,常用的有如下几种:

  1. A记录,将主机名转换成IP地址
  2. MX记录,邮件交换记录,用于定义邮件服务器的域名
  3. CNAME记录,别名记录,实现域名间的映射
  4. NS记录,标记区域的域名服务器及授权子域
  5. PTR记录,反向解析,与A记录相反,将IP转换成主机名
  6. SOA记录,SOA标记,一个起始授权区的定义

rdclass用于指定网络类型,可选的值有:

  1. IN,默认为IN
  2. CH,
  3. 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域名轮询业务监控:

步骤:

  1. 实现域名的解析,获取域名所有的A记录解析IP列表
  2. 对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处理模块的更多相关文章

  1. Python自动化运维——系统进程管理模块

    Infi-chu: http://www.cnblogs.com/Infi-chu/ 模块:psutil psutil是一个跨平台库,可以很轻松的为我们实现获取系统运行的进程和资源利用率等信息. 功能 ...

  2. 【目录】Python自动化运维

    目录:Python自动化运维笔记 Python自动化运维 - day2 - 数据类型 Python自动化运维 - day3 - 函数part1 Python自动化运维 - day4 - 函数Part2 ...

  3. Python自动化运维:技术与最佳实践 PDF高清完整版|网盘下载内附地址提取码|

    内容简介: <Python自动化运维:技术与最佳实践>一书在中国运维领域将有“划时代”的重要意义:一方面,这是国内第一本从纵.深和实践角度探讨Python在运维领域应用的著作:一方面本书的 ...

  4. python自动化运维之CMDB篇-大米哥

    python自动化运维之CMDB篇 视频地址:复制这段内容后打开百度网盘手机App,操作更方便哦 链接:https://pan.baidu.com/s/1Oj_sglTi2P1CMjfMkYKwCQ  ...

  5. python自动化运维学习第一天--day1

    学习python自动化运维第一天自己总结的作业 所使用到知识:json模块,用于数据转化sys.exit 用于中断循环退出程序字符串格式化.format字典.文件打开读写with open(file, ...

  6. Python自动化运维 技术与最佳实践PDF高清完整版免费下载|百度云盘|Python基础教程免费电子书

    点击获取提取码:7bl4 一.内容简介 <python自动化运维:技术与最佳实践>一书在中国运维领域将有"划时代"的重要意义:一方面,这是国内第一本从纵.深和实践角度探 ...

  7. Day1 老男孩python自动化运维课程学习笔记

    2017年1月7日老男孩python自动化运维课程正式开课 第一天学习内容: 上午 1.python语言的基本介绍 python语言是一门解释型的语言,与1989年的圣诞节期间,吉多·范罗苏姆为了在阿 ...

  8. python自动化运维篇

    1-1 Python运维-课程简介及基础 1-2 Python运维-自动化运维脚本编写 2-1 Python自动化运维-Ansible教程-Ansible介绍 2-2 Python自动化运维-Ansi ...

  9. Python自动化运维的职业发展道路(暂定)

    Python职业发展之路 Python自动化运维工程 Python基础 Linux Shell Fabric Ansible Playbook Zabbix Saltstack Puppet Dock ...

随机推荐

  1. IOS 获取更多的设备信息

    ●  如果想获得更多的设备信息,比如 ●  设备型号.CPU情况.内存使用情况.硬盘使用情况 ●  是否越狱.装了哪些传感器.当前运行的进程 ●  ... ... ●  有2种方法获取更多的设备信息 ...

  2. IOS AFN请求 总结

    一.2大管理对象 1.AFHTTPRequestOperationManager* 对NSURLConnection的封装 2.AFHTTPSessionManager* 对NSURLSession的 ...

  3. 【洛谷2624】[HNOI2008] 明明的烦恼(Python+利用prufer序列结论求解)

    点此看题面 大致题意: 给你某些点的度数,其余点度数任意,让你求有多少种符合条件的无根树. \(prufer\)序列 一道弱化版的题目:[洛谷2290][HNOI2004] 树的计数. 这同样也是一道 ...

  4. CF25E Test

    嘟嘟嘟 因为只有三个字符串,所以就有一个比较暴力的做法:枚举这三个串所有排列,然后对于每一个排列,减去这三个串两两的公共部分的长度,更新答案. 求公共部分自然想到kmp:比如s[1]接在s[0]后面, ...

  5. POJ 3764 The xor-longest Path 【01字典树&&求路径最大异或和&&YY】

    题目传送门:http://poj.org/problem?id=3764 The xor-longest Path Time Limit: 2000MS   Memory Limit: 65536K ...

  6. 【JeeSite】用户管理

    组织机构使用ztree插件,加载数据时使用数据权限过滤(只能访问登录用户的单位及其下属单位), 点击部门加载相应用户. <!-- 数据范围过滤 -->   BaseService.data ...

  7. 【luogu P4137 Rmq Problem / mex】 题解

    题目链接:https://www.luogu.org/problemnew/show/P4137 求区间内最大没出现过的自然数 在add时要先判断会不会对当前答案产生影响,如果有就去找下一个答案. # ...

  8. webstorm开发nodejs的技巧--代码提示DefinitelyTyped

    先发视频“WebStorm - MEAN Stack Walkthrough and Tips”,地址:http://www.tudou.com/programs/view/txhBUA7fcNA/? ...

  9. EntityFramework Code-First-------领域类配置之DataAnnotations

    EF Code-First提供了一个可以用在领域类或其属性上的DataAnnotation特性集合,DataAnnotation特性会覆盖默认的EF约定. DataAnnotation存在于两个命名空 ...

  10. c语言描述的静态查找表

    顺序表的查找: 直接循环依次和目标比较就行 有序表的查找(二分查找): int search(SS *T,Type key){ int mid; ; int high=T.length; while( ...