zoukankan      html  css  js  c++  java
  • DNS 处理模块 dnspython

     简介:

    dnspython (http://www.dnspython.org/)是Python实现一个DNS的工具包,支持所有的记录类型,可以用于查询、传输并动态更新ZONE信息.

    安装

    wget http://www.dnspython.org/kits/1.15.0/dnspython-1.15.0.tar.gz
    tar zxf dnspython-1.15.0.tar.gz
    cd dnspython-1.15.0/
    cd dnspython-1.15.0/

    模块域名解析方法详解

    resolver --- DNS解析器类,使用它的query 方法来实现域名的查询功能。

    query(self,qname,rdtype=1,rdclass=1,tcp=False,source=None,raise_on_no_answer=True,source_port=0)

    其中:

    qname参数为查询的域名,

    rdtype参数用来执行RR资源(A , MX ,CNAME ,NS, PTR, SOA)的类型,

    rdclass参数用于指定网络类型(IN ,CH,HS)

    tcp参数用于用于执行查询是否启用TCP协议,默认是False

    source和source_port参数作为指定查询源地址 和 端口

    raise_on_on_answer 参加用于指定当查询无应答时是否触发异常,默认为True.

    (1) A记录

    #!/usr/bin/env python
    #_*_ coding:utf-8_*_
    import dns.resolver
    
    domain = raw_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

     (2) MX记录

    #!/usr/bin/env python
    #_*_ coding:utf-8_*_
    import dns.resolver
    
    domain = raw_input('Please input an domain: ') #输入域名地址
    MX = dns.resolver.query(domain, 'MX')  #指定查询类型为A记录
    for i in MX:           #遍历回应结果,输出MX记录的preference及exchanger信息
      print 'MX preference =',i.preference,' mail exchanger =',i.exchange

    (3) NS记录

    #!/usr/bin/env python
    #_*_ coding:utf-8_*_
    import dns.resolver
    
    domain = raw_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()

    (4) CNAME记录

    #!/usr/bin/env python
    #_*_ coding:utf-8_*_
    import dns.resolver
    
    domain = raw_input('Please input an domain: ') #输入域名地址
    CNAME = dns.resolver.query(domain, 'CNAME')  #指定查询类型为CNAME记录
    for i in CNAME.response.answer:           #结果将回应cname后的目标域名
      for j in i.items:
        print j.to_text()

    DNS动态更新

    dns动态更新是一种在不reload和重启DNS服务的情况下更新ZONE内容的机制。dns.update实现了这种功能。具体用法如下:

    import dns.tsigkeyring
    import dns.update
    import dns.query
    
    keyring = dns.tsigkeyring.from_text({'test_key': 'XXXXXXXXXXXXXXX'})  # xxx: 搭建bind时候用于验证的 key
    update = dns.update.Update("ZONE", keyring=keyring)   # ZONE: 例如baidu.com
    update.add("aaa", 60, 'a', "192.1.1.1")    
    update.replace("bbb", 60, 'a', "192.168.1.2")
    update.delete("cccc")
  • 相关阅读:
    Unable to satisfy the following requirements解决方式
    零基础学python》(第二版)
    mysql 更新数据表的记录
    mysql创建数据库和删除数据库
    正则表达式
    python lambda函数详细解析(面试经常遇到)
    Linux 命令 统计进程数目
    Python 时间戳与时间字符串互相转
    python 安装配置(windows)
    linux 系统 tar 的用法详解
  • 原文地址:https://www.cnblogs.com/blogscc/p/9187817.html
Copyright © 2011-2022 走看看