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 in A.response.answer:
    for j in i.items:
        print j.address

运行输入:www.baidu.com,输出结果如下: 

(2)MX记录

domain = raw_input(‘Please input an domain: ‘)

MX = dns.resolver.query(domain, ‘MX‘)
for i in MX:
    print ‘MX preference =‘, i.preference, ‘mail exchanger =‘, i.exchange

运行输入:163.com,输出结果如下: 

(3)NS记录

print ‘*************NS****************‘
domain = raw_input(‘Please input an domain: ‘)
ns = dns.resolver.query(domain, ‘NS‘)
for i in ns.response.answer:
     for j in i.items:
          print j.to_text()

输入:baidu.com,输出结果如下:

 
注意:只限输入一级域名,若输入www.baidu.com是错误的

(4)CNAME记录

print ‘****************CNAME****************‘
domain = raw_input(‘Please input an domain: ‘)

cname = dns.resolver.query(domain, ‘CNAME‘)
for i in cname.response.answer:
    for j in i.items:
        print j.to_text()

输入:www.baidu.com,输出结果如下: 

一个综合的例子:

import dns.resolver
import httplib

iplist = []  # 定义域名IP列表变量
# appdomain = "www.google.com.hk"  # 定义业务域名
appdomain = "www.baidu.com"  # 定义业务域名

# 域名解析函数,解析成功IP将追加到iplist
def get_iplist(domain=""):
    try:
        A = dns.resolver.query(domain, ‘A‘)  # 解析A记录类型
    except Exception, e:
        print "dns resolver error:" + str(e)
        return
    for i in A.response.answer:
        for j in i.items:
            iplist.append(j.address)  # 追加到iplist
    return True

def checkip(ip):
    checkurl = ip + ":80"
    getcontent = ""
    httplib.socket.setdefaulttimeout(5)  # 定义http连接超时时间(5秒)
    conn = httplib.HTTPConnection(checkurl)  # 创建http连接对象

    try:
        conn.request("GET", "/", headers={"Host": appdomain})  # 发起URL请求,添加host主机头
        r = conn.getresponse()
        getcontent = r.read(15)  # 获取URL页面前15个字符,以便做可用性校验
    finally:
        if getcontent.lower() == "<!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."

  

原文地址:https://www.cnblogs.com/robinunix/p/8434761.html

时间: 2024-10-09 22:58:44

python -- DNS处理模块dnspython的相关文章

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

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

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

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

使用python的zabbix_api模块

使用python的zabbix_api模块,以下是简单的zabbix api的使用 zabbix api文档参考https://www.zabbix.com/documentation/2.2/manual/api/reference 安装zabbix_api模块 easy_install zabbix_api或者pip install zabbix_api安装模块 在zabbix上创建主机: vim create_host.py #/usr/bin/env python from zabbix

Python中subprocess 模块 创建并运行一个进程

python的subprocess模块,看到官方声明里说要尽力避免使用shell=True这个参数,于是测试了一下: from subprocess import call import shlex cmd = "cat test.txt; rm test.txt" call(cmd, shell=True) 运行之后: 1:打开并浏览了test.txt文件 2:删除了test.txt文件 from subprocess import call import shlex cmd = &

python时间处理模块 datetime time模块 deltetime模块

1 首先介绍time模块,因为简单 python 自带模块 本人使用time模块,只使用两个函数 time函数和sleep函数 import time a.     time.time()   函数 返回unix时间  常用作两个时间差的计算 b.     time.sleep()  休眠多久,精度为子秒(subsecond) In [90]: t1 = time.time() In [91]: t1 Out[91]: 1461400225.877932 In [92]: time.sleep(

python安装mysqldb模块

今天在阿里云一台新的服务器部署程序后台,发现上面的python缺少MySQLDB 模块,记录安装过程. 首先django程序,运行 python manage.py sycdb 报错: ImproperlyConfigured: Error loading MySQLdb module: No module named MySQLdb MySQLdb模块的包名字叫mysql-python,于是pip安装之,(关于pip,可以参考这篇文章) 运行: pip install mysql-python

Python 利用pytesser模块识别图像文字

使用的是python的pytesser模块,原先想做的是图片中文识别,搞了一段时间了,在中文的识别上还是有很多问题,这里做记录分享. pytesser,OCR in Python using the Tesseract engine from Google.是谷歌OCR开源项目的一个模块,可将图片中的文字转换成文本(主要是英文). 1.pytesser安装 使用设备:win8 64位 PyTesser使用Tesseract OCR引擎,将图像转换到可接受的格式,然后执行tesseract提取出文

python学习--创建模块

昨天做了python客户端和服务器端通信,并把接收到的信息写到数据库,因为对数据库进行操作是个经常调用的行为,所以我想把调用数据库的操作写成一个module来给其它python程序调用,所以将昨天的服务器端程序拆分为两个文件: 1.主程序python.py #!/usr/bin/env python import socket import json import connmysql s = socket.socket(socket.AF_INET,socket.SOCK_STREAM,0) h