python dns解析文件(dnspython)1.12
dnspython是在python下的dns解析文件。它支持几乎所有的记录类型,可以用于查询、传输并动态更新ZONE信息,同时支持TSIG(事务签名)验证消息和EDNS0(扩展DNS)。知识兔小编这里给大家带来windows和linux版本两种版本,需要的下! dnspython是什么 知识兔 dnspython是Python的一个DNS工具包。它支持几乎所有的记录类型。它可以用于查询、区域转移和动态更新。它支持TSIG验证消息和EDNS0。 dnspython分享了高和低水平访问DNS。高水平类执行查询数据给定的名称、类型和类,并返回一组回答。低水平类允许DNS区域的直接操纵,信息,名字,和记录。 看到几个dnspython可用的方法,访问页面的示例。 dnspython起源在Nominum那里发达促进DNS软件的测试。Nominum慷慨地允许它在bsd风格的开源许可证,并帮助支持其未来发展通过继续采用作者:)。 dnspython安装使用方法 知识兔 这里采用源码的安装方式,最新版本为1.12.0,如下: # 聽 # 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) 首先,我们导入模块 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 是 的 super domain,不是 的 super domain。反过来说,是 com 的 subdoamin 成立,而 是 com 的 subdomain 不成立。 我们还意识到一个 dns.name.Name 总是自己的 super domain 和 subdomain。 让我们看看如何处理域名间的相对关系: >>> r1 = n2.relativize(n1) >>> print r1 www >>> r2 = n2 - n1 >>> r1 == r2 True 我们看到linux 域名解析,通过 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'} 点击下载 下载体验 点击下载 (编辑:成都站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |