DNS模块dnspython应用及业务监控示例

1 dnspython处理模块的安装,源码方式

wget http://www.dnspython.org/kits/1.9.4/dnspython-1.9.4.tar.gz

tar zxf dnspython-1.9.4.tar.gz

cd dnspython-1.9.4/

python setup.py install

2 解析示例

A记录查询示例

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import dns.resolver
domain = raw_input("请输入一个需要解析的域名:")
A = dns.resolver.query(domain,'A')
for i in A.response.answer:
    for j in i.items:
        if j.rdtype == 1:
            print j.address

MX记录示例

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import dns.resolver
domain=raw_input('请输入一个域名:')
MX=dns.resolver.query(domain,'MX')
for i in MX:
    print i.preference, i.exchange

NS记录示例

import dns.resolver
domain=raw_input('请输入一个域名:')
NS=dns.resolver.query(domain,'NS')
for i in NS.response.answer:
    for j in i.items:
    print j.to_text()

CNAME记录示例

import dns.resolver
domain=raw_input('请输入一个域名:')
cname=dns.resolver.query(domain,'CNAME')
for i in cname.response.answer:
    for j in i.items:
    print j.to_text()

3 利用dns域名轮训监控业务

监控示例

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import dns.resolver
import os
import httplib
iplist=[]
appdomain="www.ctrip.com"
def get_iplist(domain=""):
        try:
            A=dns.resolver.query(domain,'A')
        except Exception,e:
            print "dns resolver error:"+str(e)
        for i in A.response.answer:
            for j in i.items:
                if j.rdtype == 1:
                    iplist.append(j.address)
        return True
def checkip(ip):
        checkurl=ip+":80"
        getcontent=""
        httplib.socket.setdefaulttimeout(5)
        conn=httplib.HTTPConnection(checkurl)
        try:
                conn.request("GET","/",headers={"Host":appdomain})
                r=conn.getresponse()
                getcontent=r.read(15)
        finally:
            print getcontent
            if getcontent=="<!DOCTYPE html>":
                    print ip+":80端口正常  [ok]"
            else:
                    print ip+":80端口异常  [error]"
if __name__=="__main__":
    if get_iplist(appdomain) and len(iplist)>0:
            for ip in iplist:
                    checkip(ip)
    else:
            print "dns resolver error"

执行 python test1.py

<!DOCTYPE html>

118.89.206.133:80 端口正常  [ok]

原文地址:http://blog.51cto.com/superleedo/2114049

时间: 2024-10-08 14:59:49

DNS模块dnspython应用及业务监控示例的相关文章

实践:DNS域名轮循业务监控

大部分的DNS解析都是一个域名对应一个IP地址,但是通过DNS轮循技术可以做到一个域名对应多个IP,从而实现最简单且高效的负载平衡,从而实现简单且高效的负载平衡,不过此方案最大的弊端是目标主机不可用时无法被自动剔除,因此做好业务主机的服务可用监控至关重要.本示例通过分析当前域名的解析IP,再结合服务端口探测来实现自动监控,在域名解析中添加.删除IP时,无须对监控脚本进行更改.实现架构如图1-1所示. 1.步骤 (1)实现域名的解析,获取域名所有的A记录解析IP列表: (2)对IP列表进行HTTP

Python学习笔记-DNS处理模块dnspython

DNS处理模块dnspython     dnspython是python实现的一个DNS工具包,它支持几乎所有的记录类型,可以用于查询.传输并动态更新ZONE信息,同时支持TSIG(事务签名)验证消息和EDNS0(扩展DNS). 在系统管理方面,我们可以利用其查询功能来实现DNS服务监控以及解析结果的校验,可以替代nslookup和dig等工具,轻松做到与现有平台的整合.     下载dnspython模块 [[email protected] ~]# python3 -m easy_inst

Python DNS 处理模块 dnspython

Python DNS 处理模块 dnspython 以下列举了DNSPython模块中常用方法,借鉴于书籍<Python 自动化运维:技术与最佳实践> dnspython提供大量关于DNS的处理方法,最常用的是域名查询.dnspython提供了一个DNS解析类resolver,使用它的query方法来实现域名的查询功能. query(self, qname, rdtype = 1, rdclass = 1, tcp = False, source = None, raise_on_no_ans

一、系统基础信息模块(cpu,内存,ip,dns)模块

一.系统基础信息模块(cpu,内存,ip,dns)模块 1.系统性能信息模块psutil a.(cpu信息) # yum -y install python-devel # wget https://pypi.python.org/packages/source/p/psutil/psutil-2.0.0.tar.gz --no-check-certificate # tar -zxvf psutil-2.0.0.tar.gz # cd psutil-2.0.0.tar.gz # python

爬虫程序定时执行和监控示例

爬虫程序定时执行和监控示例 简介 我们的爬虫程序在执行过程中,可能需要满足以下条件: 1.可以每天定时执行,爬取指定电商等网站内容. 2.可以对分布式爬虫进行监控,当爬虫程序挂掉之后,可以通知管理员. 下面我们来介绍如何实现这两个功能. 注意: 这里我们主要演示定时执行和监控功能,所以爬虫程序只是伪代码.如果想要详细了解如何实现网络爬虫,可以参考如下一些文章: http://blog.csdn.net/u011204847/article/category/6210222 定时执行 Quartz

DNS处理模块dnspython

http://www.dnspython.org/kits/1.9.4/ python setup.py install A记录查询 import dns.resolver domain = raw_input('Please input an domain: ') A = dns.resolver.query(domain, 'A') for i in A.response.answer: for j in i.items: print j.address MX记录 #!/usr/bin/en

DNS域名轮循业务监控

'''                 192.168.0.1 --> www.xxx.com 192.168.0.2                 192.168.0.3 获取业务域名A记录,查询出所有IP地址列表,在使用httplib模块的request()方法 以get方式请求监控页面,监控业务所有服务IP是否服务正常 ''' #!/usr/bin/env python import dns.resolver import os import http.client import soc

Python学习笔记-DNS域名轮循业务监控

大部分的DNS解析是一个域名对应一个IP地址,但是通过DNS轮循技术可将一个域名对应多个IP地址,这样可以实现简单且高效的负载平衡,但是轮循技术有一个缺点就是当目标主机不可用时,不能自动的删除,所以引出了要对业务主机的服务的可用性进行监控. 本例通过分析当前域名的解析IP,再结合服务端口探测来实现自动监控,在域名解析中添加.删除IP时,无须对监控脚步更改. ! Python 2.x中的"httplib"模块在Python 3.x中变为"http.client" #!

python -- DNS处理模块dnspython

简介 dnspython – 是python实现的一个DNS工具包,利用其查询功能来实现dns的服务监控及解析结果的校验 安装dnspython pip install dnspython 使用 常见的DNS解析类型包括A.MX.NS.CNAME (1)A记录的查询,实例如下: import dns.resolver domain = raw_input('Please input an domain: ') A = dns.resolver.query(domain, 'A') for i i