模块:dnspython
功能:
支持所有的记录类型
可以用于查询、传输并动态更新ZONE信息
支持TSIG(事务签名)验证消息和EDNS0(扩展DNS)
安装:
1
2
3
4
|
wget http:
//www
.dnspython.org
/kits/1
.9.4
/dnspython-1
.9.4.
tar
.gz
tar
-zxvf dnspython-1.9.4.
tar
.gz
cd
dnspython-1.9.4
python setup.py
install
|
dnspython提供一个DNS解析器类——resolver,使用query()方法来实现域名的查询功能模块域名解析方法:
Query()方法使用:
1
2
|
import
dns.resolver
query(
self
,qname,rdtype
=
1
,rdclass
=
1
,tcp
=
False
,source
=
None
,raise_on_no_answer
=
True
,source_port
=
0
)
|
rdtype用来指定RR资源的类型,常用的有如下几种:qname为查询的域名。
A记录,将主机名转换成IP地址
MX记录,邮件交换记录,用于定义邮件服务器的域名
CNAME记录,别名记录,实现域名间的映射
NS记录,标记区域的域名服务器及授权子域
PTR记录,反向解析,与A记录相反,将IP转换成主机名
SOA记录,SOA标记,一个起始授权区的定义
rdclass用于指定网络类型,可选的值有:
IN,默认为IN
CH,
HS,
tcp用于指定查询是否启用TCP协议
source和source_port指定查询源地址与端口,默认查询设备IP和0
raise_on_no_answer用于指定当查询无应答时,是否触发异常,默认为True
A记录查询方法:
1
2
3
4
5
6
|
import
dns.resolver
dom
=
raw_input
(
'输入域名地址:'
)
A
=
dns.resolver.query(dom,
'A'
)
# 指定查询类型为A的记录
for
a
in
A.response.answer:
# 通过response.answer方法获取查询回应信息
for
b
in
a.items:
# 遍历回应信息
print
(b.address)
|
MX记录查询方法:
1
2
3
4
5
|
import
dns.resolver
dom
=
raw_input
(
'输入域名地址:'
)
MX
=
dns.resolver.query(dom,
'MX'
)
for
a
in
MX:
print
(
'MX 优先权:'
,a.preference,
'mail 交换器:'
,a.exchange)
|
NS记录查询方法:
1
2
3
4
5
6
|
import
dns.resolver
dom
=
raw_input
(
'输入一级域名地址:'
)
NS
=
dns.resolver.query(dom,
'NS'
)
for
a
in
NS.respinse.answer:
for
b
in
a.items:
print
(b.to_text())
|
CNAME记录查询方法:
1
2
3
4
5
6
|
import
dns.resolver
dom
=
raw_input
(
'输入域名地址:'
)
cname
=
dns.resolver.query(dom,
'CNAME'
)
for
a
in
cname.response.answer:
for
b
in
a.items:
print
(b.to_text())
|
DNS域名轮询业务监控:
步骤:
实现域名的解析,获取域名所有的A记录解析IP列表
对IP列表进行HTTP级别的探测
本文转自Grodd51CTO博客,原文链接:http://blog.51cto.com/juispan/2050030,如需转载请自行联系原作者