DNS处理模块dnspython
wget
/kits/1.9.4/dnspython-1.9.
tar -zxvf
dnspython-1.9.
cd
dnspython-1.9.
python install
dnspython提供的DNS解析器类:resolver,其query方法可实现域名查询,方法定义如下:
query(self,qname,rdtype=1,rdclass=1,tcp=False,source=None,raise_on_no_answer=True,source_port=0)
qname 为域名,rdtype指定RR资源的类型,常用的如下:
A 主机名换成IP
MX 邮件交换记录,定义邮件服务器的域名
CNAME 别名记录,实现域名间的映射
NS 标记区域的域名服务器及授权子域
PTR 反向解析,与A记录相反
SOA SOA标记,一个起始授权区的定义
rdclass 指定网络类型,可选IN(默认)、CH、HS
tcp 是否启用TCP协议,默认False(不启用)
source 源地址,默认查询设备IP
source_port 源地址端口,默认0
raise_on_no_answer 指定查询无应答时是否触发异常,默认True
A记录查询
#!/usr/bin/env python
import
domain = raw_input(
'Please input an domain: '
)
A = (domain
,
'A'
)
for
i
in
:
for
j
in
:
print
MX记录查询(注意输入域名不包括www)
#!/usr/bin/env python
import
domain = raw_input(
'Please input an domain: '
)
MX = (domain
,
'MX'
)
for
i
in
MX:
print
'MX preference ='
,
,
'mail exchanger ='
,
NS记录查询
#!/usr/bin/env python
import
domain = raw_input(
'Please input an domain: '
)
ns = (domain
,
'NS'
)
for
i
in
:
for
j
in
:
print
j.to_text()
CNAME记录查询
#!/usr/bin/env python
import
domain = raw_input(
'Please input an domain: '
)
cname = (domain
,
'CNAME'
)
for
i
in
:
for
j
in
:
print
j.to_text()
DNS域名轮询业务监控
#!/usr/bin/python
# coding=UTF-8 #加入该行,否则因中文注释的存在将报错“
'\xe5' in file
”
import
import
os
import
httplib
iplist=[]
#定义域名IP列表变量
appdomain=
""
#定义业务域名
def
get_iplist
(domain=
""
):
#域名解析函数,解析成功IP将追加到iplist
try
:
A = (domain
,
'A'
)
#解析A记录类型
except
Exception
,
e:
print
"dns resolver error:"
+str(e)
return
for
i
in
:
for
j
in
:
()
#追加到iplist
return
True
def
checkip
(ip):
checkurl=ip+
":80"
getcontent=
""
(
5
)
#定义http连接超时时间(5秒)
conn=(checkurl)
#创建http连接对象
try
:
(
"GET"
,
"/"
,
headers
= {
"Host"
: appdomain})
#发起URL请求,添加host主机头
r=()
getcontent =(
15
)
#获取URL页面前15个字符,以便做可用性校验
finally
:
if
getcontent==
"<!doctype html>"
:
#监控URL页的内容一般是事先定义好,比如“HTTP200”等
print
ip+
" [OK]"
else
:
print
ip+
" [Error]"
#此处可放告警程序,可以是邮件、短信通知
if
__name__==
"__main__"
:
if
get_iplist(appdomain)
and
len(iplist)>
0
:
#条件:域名解析正确且至少要返回一个IP
for
ip
in
iplist:
checkip(ip)
else
:
print
"dns resolver error."
DNS处理模块dnspython
wget
/kits/1.9.4/dnspython-1.9.
tar -zxvf
dnspython-1.9.
cd
dnspython-1.9.
python install
dnspython提供的DNS解析器类:resolver,其query方法可实现域名查询,方法定义如下:
query(self,qname,rdtype=1,rdclass=1,tcp=False,source=None,raise_on_no_answer=True,source_port=0)
qname 为域名,rdtype指定RR资源的类型,常用的如下:
A 主机名换成IP
MX 邮件交换记录,定义邮件服务器的域名
CNAME 别名记录,实现域名间的映射
NS 标记区域的域名服务器及授权子域
PTR 反向解析,与A记录相反
SOA SOA标记,一个起始授权区的定义
rdclass 指定网络类型,可选IN(默认)、CH、HS
tcp 是否启用TCP协议,默认False(不启用)
source 源地址,默认查询设备IP
source_port 源地址端口,默认0
raise_on_no_answer 指定查询无应答时是否触发异常,默认True
A记录查询
#!/usr/bin/env python
import
domain = raw_input(
'Please input an domain: '
)
A = (domain
,
'A'
)
for
i
in
:
for
j
in
:
print
MX记录查询(注意输入域名不包括www)
#!/usr/bin/env python
import
domain = raw_input(
'Please input an domain: '
)
MX = (domain
,
'MX'
)
for
i
in
MX:
print
'MX preference ='
,
,
'mail exchanger ='
,
NS记录查询
#!/usr/bin/env python
import
domain = raw_input(
'Please input an domain: '
)
ns = (domain
,
'NS'
)
for
i
in
:
for
j
in
:
print
j.to_text()
CNAME记录查询
#!/usr/bin/env python
import
domain = raw_input(
'Please input an domain: '
)
cname = (domain
,
'CNAME'
)
for
i
in
:
for
j
in
:
print
j.to_text()
DNS域名轮询业务监控
#!/usr/bin/python
# coding=UTF-8 #加入该行,否则因中文注释的存在将报错“
'\xe5' in file
”
import
import
os
import
httplib
iplist=[]
#定义域名IP列表变量
appdomain=
""
#定义业务域名
def
get_iplist
(domain=
""
):
#域名解析函数,解析成功IP将追加到iplist
try
:
A = (domain
,
'A'
)
#解析A记录类型
except
Exception
,
e:
print
"dns resolver error:"
+str(e)
return
for
i
in
:
for
j
in
:
()
#追加到iplist
return
True
def
checkip
(ip):
checkurl=ip+
":80"
getcontent=
""
(
5
)
#定义http连接超时时间(5秒)
conn=(checkurl)
#创建http连接对象
try
:
(
"GET"
,
"/"
,
headers
= {
"Host"
: appdomain})
#发起URL请求,添加host主机头
r=()
getcontent =(
15
)
#获取URL页面前15个字符,以便做可用性校验
finally
:
if
getcontent==
"<!doctype html>"
:
#监控URL页的内容一般是事先定义好,比如“HTTP200”等
print
ip+
" [OK]"
else
:
print
ip+
" [Error]"
#此处可放告警程序,可以是邮件、短信通知
if
__name__==
"__main__"
:
if
get_iplist(appdomain)
and
len(iplist)>
0
:
#条件:域名解析正确且至少要返回一个IP
for
ip
in
iplist:
checkip(ip)
else
:
print
"dns resolver error."