Python学习笔记-DNS处理模块dnspython

简介:

DNS处理模块dnspython

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

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

    下载dnspython模块

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

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

1
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记录查询方法源码):  

?
1
   [root@kurol pkg1] # vim dnsa.py
1
2
3
4
5
6
#!/usr/bin/python3
#import dns.resolverdomain = input('Please input an domain: ')    #输入域名地址
=  dns.resolver.query(domain,  'A' )      #指定查询类型为A记录
for  in  A.response.answer:      #通过response.answer方法获取查询回应信息    
for  in  i.items:    #遍历回应信息        
     print  (j.address)
?
1
[root@kurol pkg1] # python3 dnsa.py Please input an domain: www.google.com93.46.8.89


        MX记录(实现MX记录查询方法源码):

?
1
[root@kurol pkg1] # vim mxdns.py
1
2
3
4
5
#!/usr/bin/python3
#import dns.resolverdomain = input('Please input an domain: ') #输入域名地址
MX  =  dns.resolver.query(domain,  'MX' #指定查询类型为MX记录
for  in  MX:  #通过response.answer方法获取查询回应信息    
     print  ( 'MX preference = ' , i.preference,  'main exchanger = ' , i.exchange)
1
2
3
4
5
6
[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记录查询方法源码):

?
1
[root@kurol pkg1] # vim nsdns.py
1
2
3
4
5
#!/usr/bin/python3#import dns.resolverdomain = input('Please input an domain: ') #输入域名地址
ns  =  dns.resolver.query(domain,  'NS' #指定查询类型为NS记录
for  in  ns.response.answer:  #通过response.answer方法获取查询回应信息    
for  in  i.items:  #遍历回应信息        
     print  (j.to_text())
1
2
3
4
5
6
[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记录查询方法源码):

?
1
[root@kurol pkg1] # vim cnamedns.py
1
2
3
4
5
#!/usr/bin/python3#import dns.resolverdomain = input('Please input an domain: ') #输入域名地址
cname  =  dns.resolver.query(domain,  'CNAME' #指定查询类型为CNAME记录
for  in  ns.response.answer:  #通过response.answer方法获取查询回应信息    
for  in  i.items:  #遍历回应信息
     print  (j.to_text())



      本文转自谢育政 51CTO博客,原文链接:http://blog.51cto.com/kurolz/1935039 ,如需转载请自行联系原作者


目录
打赏
0
0
0
0
350
分享
相关文章
深入解析:使用 Python 爬虫获取淘宝店铺所有商品接口
本文介绍如何使用Python结合淘宝开放平台API获取指定店铺所有商品数据。首先需注册淘宝开放平台账号、创建应用并获取API密钥,申请接口权限。接着,通过构建请求、生成签名、调用接口(如`taobao.items.search`和`taobao.item.get`)及处理响应,实现数据抓取。代码示例展示了分页处理和错误处理方法,并强调了调用频率限制、数据安全等注意事项。此技能对开发者和数据分析师极具价值。
|
4月前
|
Python教程:os 与 sys 模块详细用法
os 模块用于与操作系统交互,主要涉及夹操作、路径操作和其他操作。例如,`os.rename()` 重命名文件,`os.mkdir()` 创建文件夹,`os.path.abspath()` 获取文件绝对路径等。sys 模块则用于与 Python 解释器交互,常用功能如 `sys.path` 查看模块搜索路径,`sys.platform` 检测操作系统等。这些模块提供了丰富的工具,便于开发中处理系统和文件相关任务。
157 14
基于Python的情感分析与情绪识别技术深度解析
本文探讨了基于Python的情感分析与情绪识别技术,涵盖基础概念、实现方法及工业应用。文中区分了情感分析与情绪识别的核心差异,阐述了从词典法到深度学习的技术演进,并通过具体代码展示了Transformers架构在细粒度情感分析中的应用,以及多模态情绪识别框架的设计。此外,还介绍了电商评论分析系统的构建与优化策略,包括领域自适应训练和集成学习等方法。未来,随着深度学习和多模态数据的发展,该技术将更加智能与精准。
317 1
[oeasy]python071_我可以自己做一个模块吗_自定义模块_引入模块_import_diy
本文介绍了 Python 中模块的导入与自定义模块的创建。首先,我们回忆了模块的概念,即封装好功能的部件,并通过导入 `__hello__` 模块实现了输出 "hello world!" 的功能。接着,尝试创建并编辑自己的模块 `my_file.py`,引入 `time` 模块以获取当前时间,并在其中添加自定义输出。
84 5
[oeasy]python070_如何导入模块_导入模块的作用_hello_dunder_双下划线
本文介绍了如何在Python中导入模块及其作用,重点讲解了`__hello__`模块的导入与使用。通过`import`命令可以将外部模块引入当前环境,增强代码功能。例如,导入`__hello__`模块后可输出“Hello world!”。此外,还演示了如何使用`help()`和`dir()`函数查询模块信息,并展示了导入多个模块的方法。最后,通过一个实例,介绍了如何利用`jieba`、`WordCloud`和`matplotlib`模块生成词云图。总结来说,模块是封装好的功能部件,能够简化编程任务并提高效率。未来将探讨如何创建自定义模块。
70 8
Python爬取某云热歌榜:解析动态加载的歌曲数据
Python爬取某云热歌榜:解析动态加载的歌曲数据
通义灵码AI程序员实战:从零构建Python记账本应用的开发全解析
本文通过开发Python记账本应用的真实案例,展示通义灵码AI程序员2.0的代码生成能力。从需求分析到功能实现、界面升级及测试覆盖,AI程序员展现了需求转化、技术选型、测试驱动和代码可维护性等核心价值。文中详细解析了如何使用Python标准库和tkinter库实现命令行及图形化界面,并生成单元测试用例,确保应用的稳定性和可维护性。尽管AI工具显著提升开发效率,但用户仍需具备编程基础以进行调试和优化。
501 9
Python入门:6.深入解析Python中的序列
在 Python 中,**序列**是一种有序的数据结构,广泛应用于数据存储、操作和处理。序列的一个显著特点是支持通过**索引**访问数据。常见的序列类型包括字符串(`str`)、列表(`list`)和元组(`tuple`)。这些序列各有特点,既可以存储简单的字符,也可以存储复杂的对象。 为了帮助初学者掌握 Python 中的序列操作,本文将围绕**字符串**、**列表**和**元组**这三种序列类型,详细介绍其定义、常用方法和具体示例。
Python入门:6.深入解析Python中的序列
Python入门:2.注释与变量的全面解析
在学习Python编程的过程中,注释和变量是必须掌握的两个基础概念。注释帮助我们理解代码的意图,而变量则是用于存储和操作数据的核心工具。熟练掌握这两者,不仅能提高代码的可读性和维护性,还能为后续学习复杂编程概念打下坚实的基础。
Python入门:2.注释与变量的全面解析
内网桌面监控软件深度解析:基于 Python 实现的 K-Means 算法研究
内网桌面监控软件通过实时监测员工操作,保障企业信息安全并提升效率。本文深入探讨K-Means聚类算法在该软件中的应用,解析其原理与实现。K-Means通过迭代更新簇中心,将数据划分为K个簇类,适用于行为分析、异常检测、资源优化及安全威胁识别等场景。文中提供了Python代码示例,展示如何实现K-Means算法,并模拟内网监控数据进行聚类分析。
138 10

相关产品

  • 云解析DNS
  • 推荐镜像

    更多
    AI助理

    你好,我是AI助理

    可以解答问题、推荐解决方案等