DNS处理模块dnspython

    dnspython是python实现的一个DNS工具包,它支持几乎所有的记录类型,可以用于查询、传输并动态更新ZONE信息,同时支持TSIG(事务签名)验证消息和EDNS0(扩展DNS)。

在系统管理方面,我们可以利用其查询功能来实现DNS服务监控以及解析结果的校验,可以替代nslookup和dig等工具,轻松做到与现有平台的整合。

    下载dnspython模块

[root@kurol ~]# python3 -m easy_install -i http://pypi.douban.com/simple/ dnspython

    dnspython提供大量关于DNS的处理方法,最常用的是域名查询。dnspython提供了一个DNS解析类resolver,使用它的query方法来实现域名的查询功能。 

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标记,一个起始授权区的定义


    常见的解析类型示例:

        A记录(实现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方法获取查询回应信息
for j in i.items:   #遍历回应信息        print (j.address)
[root@kurol pkg1]# python3 dnsa.py Please input an domain: www.google.com93.46.8.89

        MX记录(实现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方法获取查询回应信息    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记录(实现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方法获取查询回应信息
for j in i.items: #遍历回应信息        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记录(实现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方法获取查询回应信息
for j in i.items: #遍历回应信息print (j.to_text())

转载于:https://blog.51cto.com/kurolz/1935039

Python学习笔记-DNS处理模块dnspython相关推荐

  1. python学习笔记4(模块

    python学习笔记4(模块) 一.模块 1.1 import语句 1.2 __name__属性 1.3 dir()函数 1.4 包 2.1 导入特定模块: 二.输入与输出 2.1 format使用 ...

  2. Python学习笔记__5章 模块

    # 这是学习廖雪峰老师python教程的学习笔记 1.概览 为了编写可维护的代码,我们把很多函数分组,分别放到不同的文件里,这样,每个文件包含的代码就相对较少,在Python中,一个.py文件就称之为 ...

  3. Python学习笔记--day09 函数 模块 (文件、路径操作)

    第二模块 函数&模块 第一模块主要是学习python基础知识,从第二模块开始就可以通过程序去解决工作中实际的问题. 函数,一个用于专门实现某个功能的代码块(可重用). 内置函数 len.bin ...

  4. Python学习笔记-DNS域名轮循业务监控

    大部分的DNS解析是一个域名对应一个IP地址,但是通过DNS轮循技术可将一个域名对应多个IP地址,这样可以实现简单且高效的负载平衡,但是轮循技术有一个缺点就是当目标主机不可用时,不能自动的删除,所以引 ...

  5. Python学习笔记之常用模块总结,持续更新...

    阅读目录 1. 时间模块--datetime 2. 文件目录操作模块--os 很多人学习python,不知道从何学起. 很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手. 很多已经 ...

  6. python 学习笔记8 (模块)

    Python 模块(Module),是一个 Python 文件,以 .py 结尾,包含了 Python 对象定义和Python语句. 模块让你能够有逻辑地组织你的 Python 代码段. 把相关的代码 ...

  7. python学习笔记之常用模块用法分析

    内置模块(不用import就可以直接使用) 常用内置函数 help(obj) 在线帮助, obj可是任何类型 callable(obj) 查看一个obj是不是可以像函数一样调用 repr(obj) 得 ...

  8. python学习笔记 day20 常用模块(六)

    序列化模块 在讲序列化模块之前,先来看序列化的概念: 我们在进行文件存储时 用的都是str字符串,但是在网络上传输时都是采用bytes类型: 序列化: 数据类型--->字符串类型 反序列化: 字 ...

  9. python学习笔记 day20 序列化模块(二)

    pickle 可以将任何数据类型转为字符串:但是pickle之后的结果也只有python可以看懂,而且反序列化依靠python代码: pickle 和 json 很像 都是有dumps loads d ...

最新文章

  1. SVN 代码下载,上传
  2. Running Builds
  3. VTK修炼之道24:图像基本操作_单颜色通道图像合成彩色
  4. MFC 基础知识:对话框背景添加图片和按钮Button添加图片
  5. 在移动端项目中使用vconsole
  6. 堪称艺术品级的应用开发框架,Abp有望超越Spring?
  7. u-boot向linux内核传递启动参数
  8. html列表按时间排序代码_把 Linux 上的文件列表和排序玩出花来 | Linux 中国
  9. 理解分布式和区块链技术
  10. shell split分析日志文件
  11. 【Java】用类描述计算机中CPU的速度和硬盘的容量,要求Java应用程序由4个类,名字分别是PC、CPU、HardDisk、和Test,其中Test是主类。
  12. 测试理论----软件测试六大测试类型
  13. 统帅转型:轻时尚时代挺进年轻领地
  14. 证券基金经营机构信息技术管理办法
  15. 2021-06-13早龙广告视频脚本 ——《世间不过是一顿早餐》
  16. 【Python 每日一技】建立多个值和单个键的映射
  17. 1688商品详情接口
  18. Mysql数据库简要介绍
  19. Windows下在命令行安装postgresql,并注册成window服务;产品内置postgre
  20. 服务器微信了早上好,微信早上好祝福语大全

热门文章

  1. php获取longtext字段为空,php – 在longtext字段上准备好的mysqli select语句将返回空...
  2. Java语法基础-2
  3. jupyter中中文显示不正常_jupyter 中文乱码设置编码格式 避免控制台输出的解决...
  4. 自适应滤波器_有源电力滤波器的使用意义和作用
  5. 电脑cpu排名_可能是最详细的小白【笔记本电脑】选购攻略(附热门机型推荐)...
  6. js 月份加6个月_12月AHA HS大众急救认证培训22个城市报名开启!2021年1~6月份课程预售限时开启!!...
  7. 在Windows里备份Linux分区,在Windows里分出Linux分区(Linux分区).pdf
  8. mysql 备份 第三方工具_Mysql第三方备份工具Xtrabackup使用说明
  9. linux java远程调试_Visual Studio 2017 Linux远程调试(gdbserver)
  10. win2003服务器通过ipsec做防火墙的配置方法