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 ( selfqnamerdtype  =  1rdclass  =  1tcp  =  Falsesource  =  Noneraise_on_no_answer  =  Truesource_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
7
8
#!/usr/bin/python3
#
import  dns. resolver
domain  =  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 )  
 
 
1
2
3
[ root@ kurol  pkg1 ]python3  dnsa. py 
Please  input  an  domainwww. google. com
93.46.8.89  

 

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

 
 
1
[ root@ kurol  pkg1 ]vim  mxdns. py  

  
  
1
2
3
4
5
6
7
#!/usr/bin/python3
#
import  dns. resolver
domain  =  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 )      
 
 
1
2
3
4
5
6
[ root@ kurol  pkg1 ]python3  mxdns. py 
Please  input  an  domainbaidu. 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
6
7
8
#!/usr/bin/python3
#
import  dns. resolver
domain  =  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 ( ))  
 
 
1
2
3
4
5
6
[ root@ kurol  pkg1 ]python3  nsdns. py 
Please  input  an  domainqq. com
ns3. 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
6
7
8
#!/usr/bin/python3
#
import  dns. resolver
domain  =  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 ( ))  

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值