热门排行
简介
dnspython是一个在python下的dns解析文件。它支持几乎所有的记录类型,可以用于查询、传输并动态更新ZONE信息,同时支持TSIG(事务签名)验证消息和EDNS0(扩展DNS)。本平台提供给大家的是windows和linux版本两种版本,有需要的朋友们可以下载试试吧!
dnspython是Python的一个DNS工具包。它支持几乎所有的记录类型。它可以用于查询、区域转移和动态更新。它支持TSIG验证消息和EDNS0。
dnspython提供了高和低水平访问DNS。高水平类执行查询数据给定的名称、类型和类,并返回一组回答。低水平类允许DNS区域的直接操纵,信息,名字,和记录。
看到几个dnspython可用的方法,访问页面的示例。
dnspython起源在Nominum那里发达促进DNS软件的测试。Nominum慷慨地允许它在bsd风格的开源许可证,并帮助支持其未来发展通过继续采用作者:)。
安装使用方法
这里采用源码的安装方式,最新版本为1.12.0,如下:
# //www.dnspython.org/kits/1.12.0/dnspython-1.12.0.tar.gz
# tar -zxvf dnspython-1.12.0.tar.gz
# cd dnspython-1.12.0
# python setup.py install
对域名进行操作
域名是 DNS 系统中最基本的对象。
dnspython 通过类 dns.name.Name 提供了对域名信息进行封装。
对于类 dns.name.Name 的实例,我们可以进行一些操作。
请看下面的例子(已经准备好了交互式 Python 环境了吗):
>>> import dns.name
>>> n1 = dns.name.from_text('google.com')
>>> print type(n1)
<class 'dns.name.Name'>
首先,我们导入模块 dns.name。
通过函数 dns.name.from_text(),我们很方便的从字符串 google.com 创建了一个类 dns.name.Name 的实例。
随后,我们通过 type() 函数证实了这一点。
让我们再创建几个类 dns.name.Name 的实例。
>>> n0 = dns.name.from_text('com')
>>> n2 = dns.name.from_text('www.google.com')
>>> n3 = dns.name.from_text('www.google.cn')
类 dns.name.Name 的方法 is_subdomain() 和 is_superdomain 可以帮助我们判读一个域名是否是另一个域名的子域或者超域。
>>> n0.is_superdomain(n2)
True
>>> n0.is_superdomain(n3)
False
>>> n2.is_subdomain(n1)
True
>>> n3.is_subdomain(n1)
False
>>> n1.is_subdomain(n1)
True
>>> n1.is_superdomain(n1)
True
通过上面的例子我们看到,com 是 www.google.com 的 super domain,不是 www.google.cn 的 super domain。反过来说,www.google.com是 com 的 subdoamin 成立,而 www.google.cn 是 com 的 subdomain 不成立。
我们还意识到一个 dns.name.Name 总是自己的 super domain 和 subdomain。
让我们看看如何处理域名间的相对关系:
>>> r1 = n2.relativize(n1)
>>> print r1
www
>>> r2 = n2 - n1
>>> r1 == r2
True
我们看到,通过 relativize() 方法可以获得一个域名相对其 superdomain 的部分,例如 n2 相对 n1 的部分是 www。
我们也可以使用减(-)操作得到等价结果。那么,是否可以使用加(+)操作处理域名呢?
>>> r1 + n1 == n2
True
答案是肯定的。
收起
dnspython 增删改查记录
操作
dic.clear() 清除字典
dic.keys() 获取键的列表
dic.values() 获取值的列表
dic.copy() 复制字典
dic.pop(k) 删除键k
dic.get(k) 得到键k的值
dic.update() 更新成员,若成员不在,相当于添加
dic.items() 获得由键和值组成的列表
dic.popitem() 随机删除一个键值对,并将其返回
实例
d = {'name':'LBJ','age':23,'addr':'BeiJing'}
print 'd=',d #显示结果:d= {'age': 23, 'name': 'LBJ', 'addr': 'BeiJing'}
d.clear() ;
print 'd=',d #显示结果:d= {}
d.update({'name':'LBJ','age':23,'addr':'BeiJing'})
print 'd=',d #显示结果:d= {'age': 23, 'name': 'LBJ', 'addr': 'BeiJing'}
print 'd.keys()=',d.keys() #显示结果:d.keys()= ['age', 'name', 'addr']
print 'd.values()=',d.values() #显示结果:d.values()= [23, 'LBJ', 'BeiJing']
d2 = d.copy()
print 'd2=',d2 #显示结果:d2= {'age': 23, 'name': 'LBJ', 'addr': 'BeiJing'}
print 'd.popitem()=',d.popitem() #显示结果:d.popitem()= ('age', 23)
print 'd=',d #显示结果:d= {'name': 'LBJ', 'addr': 'BeiJing'}
dnspython是Python的一个DNS工具包。它支持几乎所有的记录类型。它可以用于查询、区域转移和动态更新。它支持TSIG验证消息和EDNS0。
dnspython提供了高和低水平访问DNS。高水平类执行查询数据给定的名称、类型和类,并返回一组回答。低水平类允许DNS区域的直接操纵,信息,名字,和记录。
看到几个dnspython可用的方法,访问页面的示例。
dnspython起源在Nominum那里发达促进DNS软件的测试。Nominum慷慨地允许它在bsd风格的开源许可证,并帮助支持其未来发展通过继续采用作者:)。
安装使用方法
这里采用源码的安装方式,最新版本为1.12.0,如下:
# //www.dnspython.org/kits/1.12.0/dnspython-1.12.0.tar.gz
# tar -zxvf dnspython-1.12.0.tar.gz
# cd dnspython-1.12.0
# python setup.py install
对域名进行操作
域名是 DNS 系统中最基本的对象。
dnspython 通过类 dns.name.Name 提供了对域名信息进行封装。
对于类 dns.name.Name 的实例,我们可以进行一些操作。
请看下面的例子(已经准备好了交互式 Python 环境了吗):
>>> import dns.name
>>> n1 = dns.name.from_text('google.com')
>>> print type(n1)
<class 'dns.name.Name'>
首先,我们导入模块 dns.name。
通过函数 dns.name.from_text(),我们很方便的从字符串 google.com 创建了一个类 dns.name.Name 的实例。
随后,我们通过 type() 函数证实了这一点。
让我们再创建几个类 dns.name.Name 的实例。
>>> n0 = dns.name.from_text('com')
>>> n2 = dns.name.from_text('www.google.com')
>>> n3 = dns.name.from_text('www.google.cn')
类 dns.name.Name 的方法 is_subdomain() 和 is_superdomain 可以帮助我们判读一个域名是否是另一个域名的子域或者超域。
>>> n0.is_superdomain(n2)
True
>>> n0.is_superdomain(n3)
False
>>> n2.is_subdomain(n1)
True
>>> n3.is_subdomain(n1)
False
>>> n1.is_subdomain(n1)
True
>>> n1.is_superdomain(n1)
True
通过上面的例子我们看到,com 是 www.google.com 的 super domain,不是 www.google.cn 的 super domain。反过来说,www.google.com是 com 的 subdoamin 成立,而 www.google.cn 是 com 的 subdomain 不成立。
我们还意识到一个 dns.name.Name 总是自己的 super domain 和 subdomain。
让我们看看如何处理域名间的相对关系:
>>> r1 = n2.relativize(n1)
>>> print r1
www
>>> r2 = n2 - n1
>>> r1 == r2
True
我们看到,通过 relativize() 方法可以获得一个域名相对其 superdomain 的部分,例如 n2 相对 n1 的部分是 www。
我们也可以使用减(-)操作得到等价结果。那么,是否可以使用加(+)操作处理域名呢?
>>> r1 + n1 == n2
True
答案是肯定的。
收起
dnspython 增删改查记录
操作
dic.clear() 清除字典
dic.keys() 获取键的列表
dic.values() 获取值的列表
dic.copy() 复制字典
dic.pop(k) 删除键k
dic.get(k) 得到键k的值
dic.update() 更新成员,若成员不在,相当于添加
dic.items() 获得由键和值组成的列表
dic.popitem() 随机删除一个键值对,并将其返回
实例
d = {'name':'LBJ','age':23,'addr':'BeiJing'}
print 'd=',d #显示结果:d= {'age': 23, 'name': 'LBJ', 'addr': 'BeiJing'}
d.clear() ;
print 'd=',d #显示结果:d= {}
d.update({'name':'LBJ','age':23,'addr':'BeiJing'})
print 'd=',d #显示结果:d= {'age': 23, 'name': 'LBJ', 'addr': 'BeiJing'}
print 'd.keys()=',d.keys() #显示结果:d.keys()= ['age', 'name', 'addr']
print 'd.values()=',d.values() #显示结果:d.values()= [23, 'LBJ', 'BeiJing']
d2 = d.copy()
print 'd2=',d2 #显示结果:d2= {'age': 23, 'name': 'LBJ', 'addr': 'BeiJing'}
print 'd.popitem()=',d.popitem() #显示结果:d.popitem()= ('age', 23)
print 'd=',d #显示结果:d= {'name': 'LBJ', 'addr': 'BeiJing'}