Infi-chu:

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

模块:dnspython

功能:

  1. 支持所有的记录类型
  2. 可以用于查询、传输并动态更新ZONE信息
  3. 支持TSIG(事务签名)验证消息和EDNS0(扩展DNS)

安装:

  1. wget http://www.dnspython.org/kits/1.9.4/dnspython-1.9.4.tar.gz
  2.  
  3. tar -zxvf dnspython-1.9.4.tar.gz
  4. cd dnspython-1.9.4
  5. python setup.py install

模块域名解析方法:

dnspython提供一个DNS解析器类——resolver,使用query()方法来实现域名的查询功能

Query()方法使用:

  1. #import dns.resolver
  2.  
  3. #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记录查询方法:

  1. #import dns.resolver
  2.  
  3. #dom=raw_input('输入域名地址:')
  4.  
  5. #A=dns.resolver.query(dom,'A') # 指定查询类型为A的记录
  6.  
  7. #for a in A.response.answer: # 通过response.answer方法获取查询回应信息
  8.  
  9. # for b in a.items: # 遍历回应信息
  10.  
  11. # print(b.address)

MX记录查询方法:

  1. #import dns.resolver
  2.  
  3. #dom=raw_input('输入域名地址:')
  4.  
  5. #MX=dns.resolver.query(dom,'MX')
  6.  
  7. #for a in MX:
  8.  
  9. # print('MX 优先权:',a.preference,'mail 交换器:',a.exchange)

NS记录查询方法:

  1. #import dns.resolver
  2.  
  3. #dom=raw_input('输入一级域名地址:')
  4.  
  5. #NS=dns.resolver.query(dom,'NS')
  6.  
  7. #for a in NS.respinse.answer:
  8.  
  9. # for b in a.items:
  10.  
  11. # print(b.to_text())

CNAME记录查询方法:

  1. #import dns.resolver
  2.  
  3. #dom=raw_input('输入域名地址:')
  4.  
  5. #cname=dns.resolver.query(dom,'CNAME')
  6.  
  7. #for a in cname.response.answer:
  8.  
  9. # for b in a.items:
  10.  
  11. # print(b.to_text())

DNS域名轮询业务监控:

步骤:

  1. 实现域名的解析,获取域名所有的A记录解析IP列表
  2. 对IP列表进行HTTP级别的探测

实现:

  1. #import dns.resolver
  2.  
  3. #import os
  4.  
  5. #import httplib
  6.  
  7. #ip_list=[] # 定义域名的IP列表
  8.  
  9. #dom=raw_input('输入域名:')
  10.  
  11. #def get_ip_list(dom=''):
  12.  
  13. # try:
  14.  
  15. # A=dns.resolver.query(dom,'A') #解析A记录类型
  16.  
  17. # except Exception,e:
  18.  
  19. # print('DNS解析错误:',str(e))
  20.  
  21. # return
  22.  
  23. # for a in A.response.answer:
  24.  
  25. # for b in a.items:
  26.  
  27. # ip_list.append(b.address) # 添加到IP列表
  28.  
  29. #def checkip(ip):
  30.  
  31. # checkurl=ip+':80'
  32.  
  33. # getcontent=''
  34.  
  35. # httplib.socket.setdefaulttimeout(10) # 定义http连接超时时间,10s
  36.  
  37. # conn=httplib.HTTPConnection(checkurl) # 创建http连接对象
  38.  
  39. # try:
  40.  
  41. # conn.request('GET','/',headers={'HOST':dom}) # 发起URL请求,添加host主机头
  42.  
  43. # r=conn.getresponse()
  44.  
  45. # getcontent=r.read(15) # 获取URL页面前的15个字符,以便做可用性校验
  46.  
  47. # finally:
  48.  
  49. # if getcontent=='<!doctype html>': # 监控URL页的内容一般是事先定义好的
  50.  
  51. # print(ip+'[OK]')
  52.  
  53. # else:
  54.  
  55. # print(ip+'[error]')
  56.  
  57. #if __name__="__main__":
  58.  
  59. # if get_ip_list(dom) and len(ip_list)>0: #域名解析正确,且IP列表有数据
  60.  
  61. # for a in ip_list:
  62.  
  63. # print(a)
  64.  
  65. # else:
  66.  
  67. # 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. MySQL之innochecksum初探

    innochecksum是一个用于校验innodb表空间文件完整性的工具,这是一个官方自带的工具,关于它的介绍,可以查看MySQL官方文档,下文主要是通过innodb_ruby来对innochecks ...

  2. 初次撸Python,踩平些小坑~

    [转义字符] os.path.isdir(targetPath)总是报错,以为字符串不行而是要转成file类型,尝试了很多方法还是没解决,最后发现,windows下的路径中字符串中需要转义(例子在网上 ...

  3. ZT 父子进程共享文件描述符

    转贴自倒霉熊的博客 [linux学习笔记-2]父子进程共享文件描述符 (2009-03-02 23:03:17) 转载▼ 标签: 学习 linux 子进程 文件描述符 杂谈 分类: 学习 #inclu ...

  4. NODE-windows 下安装nodejs及其配置环境

    相信对于很多关注javascript发展的同学来说,nodejs已经不是一个陌生的词眼.有关nodejs的相关资料网上已经铺天盖地.由于它的高并发特性,造就了其特殊的应用地位. 国内目前关注最高,维护 ...

  5. MySQL学习(一) 数据表基本操作

    创建数据库:create database db_name 查看数据库结构:show create database db_name 删除数据库:drop database db_name 查看数据库 ...

  6. U3

    一个项目里面可以有多个Activity AndroidManifest.xml<intent-filter> <action android:name="android.i ...

  7. c#加一个后台线程

  8. OsharpNS轻量级.net core快速开发框架简明入门教程-Osharp.Hangfire使用

    OsharpNS轻量级.net core快速开发框架简明入门教程 教程目录 从零开始启动Osharp 1.1. 使用OsharpNS项目模板创建项目 1.2. 配置数据库连接串并启动项目 1.3. O ...

  9. spring 跨域 CORS (Cross Origin Resources Share) 跨域

    Spring提供了三种方式跨域 1.CorsFilter 过滤器 2.<mvc:cors> Bean(全局,推荐使用) 3.@CrossOrigin注解 以上三种方式本质都是用来配置Cor ...

  10. CSU 1023 修路(二分+模拟)

    前段时间,某省发生干旱,B山区的居民缺乏生活用水,现在需要从A城市修一条通往B山区的路.假设有A城市通往B山区的路由m条连续的路段组成,现在将这m条路段承包给n个工程队(n ≤ m ≤ 300).为了 ...