python dnspython模块 运维自动化

Dnspython模块

1.模块域名解析方法

A记录,主机名转换成IP地址

MX记录,邮件交换记录,定义邮件服务器的域名

CNAME记录,别名记录,实现域名间的映射

NS记录,标记区域的域名服务器及授权子域

PTR记录,反向解析,与A记录相反,将IP转换成主机名

SOA记录,SOA标记,一个起始授权区的定义

2.常见解析类型示例说明

实现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

220.181.111.86

123.125.114.144

220.181.111.85

MX记录

import dns.resolver

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

MX preference = 20 mail exchanger = jpmx.baidu.com.

MX preference = 20 mail exchanger = mx50.baidu.com.

MX preference = 10 mail exchanger = mx.n.shifen.com.

MX preference = 20 mail exchanger = mx1.baidu.com.

NS记录

import dns.resolver

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()

ns4.baidu.com.

dns.baidu.com.

ns7.baidu.com.

ns2.baidu.com.

ns3.baidu.com.

CNAME记录

import dns.resolver

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()

2.DNS域名轮询业务监控

大部分的DNS解析都是一个域名对应一个IP,但通过DNS轮询技术可以做到一个域名对应多个IP,从而实现最简单且高效的负载均衡,不过此方案的最大弊端是目标主机不可用时无法被自动剔除,因此做好业务主机的服务可监控至关重要。本示例通过分析天谴域名的解析IP,再结合服务端口探测来实现自动监控,在域名解析中添加、删除IP时,无须对监控脚本进行修改。

(1)步骤

实现域名的解析,获取域名所有的A记录解析IP列表

对IP列表进行HTTP级别的探测

#!/usr/bin/env python
import dns.resolver
import os
import httplib
 
iplist = []
appdomain = ‘163.com‘
 
def get_iplist(domain = ""):
        try:
                A = dns.resolver.query(domain,‘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)
        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:
                if getcontent == "<!doctype html>":
                        print ip + "[OK]"
                else:
                        print ip + "[Error]"
 
if __name__ == "__main__":
        if get_iplist(appdomain) and len(iplist) > 0:
                for ip in iplist:
                        checkip(ip)
        else:
                print "dns resolver error."
时间: 2024-08-28 23:23:19

python dnspython模块 运维自动化的相关文章

python pycurl模块 运维自动化

pycurl模块 #!/usr/bin/env python # -*- coding:utf-8 -*- import os,sys import time import sys import pycurl URL="http://www.yitongjia.com" c = pycurl.Curl() c.setopt(pycurl.URL,URL) c.setopt(pycurl.CONNECTTIMEOUT,5) c.setopt(pycurl.TIMEOUT,5) c.set

python smtplib模块 运维自动化

smtplib模块 smtplib.SMTP([host[, port[, local_hostname[, timeout]]]]) SMTP.connect([host[,port]])远程主机 SMTP.login(user.password)远程校验 SMTP.sendmail(from_addr,to_addrs,msg[,mail_options,rcpt_options])实现邮件的发送功能 SMTP.stattls([keyfile[,certfile]])启动TLS安全传输模式

python IPy模块 运维自动化

IPy模块 1.区分IPV4.IPV6 IP('10.0.0.0/8').version() 通过指定的网段输出该网段的IP个数及所有IP地址清单 from IPy import IP ip = IP('192.168.0.0/16') ip.len() for x in ip: print x 反响解析名称.IP类型.IP转换 ip = IP('192.168.1.20') ip.reverseName() ip.iptype() IP('8.8.8.8').int() 网络地址的转换 pri

实战:基于Python构建运维自动化平台

导语: 今天与大家一起探讨如何基于Python构建一个可扩展的运维自动化平台,也希望能与大家一起交流,共同成长. 此次分享将通过介绍OMServer.OManager具备的功能.架构设计.模块定制.安全审计.C/S结构的实现等几个方面的内容来展开. 为什么选择Python? 默认安装且跨平台 可读性好且开发效率高 丰富的第三方库(开发框架.各类API.科学计算.GUI等) 社区活跃&众多开发者. Python在腾讯的现状,根据去年内部提交组件语言统计,除去2.3.4前端技术,Python在高级编

如何基于Python构建一个可扩展的运维自动化平台

嘉宾简介 刘天斯 从事互联网运维工作已13年,目前就职于腾讯-互动娱乐部,负责游戏大数据的运营,曾就职于天涯社区,担任首席架构师/系统管理员. 热衷开源技术的研究,包括系统架构.运维开发.负载均衡.缓存技术.数据库.NOSQL.分布式存储.消息中间件.大数据及云计算.Mesos.Docker.DevOps等领域.擅长大规模集群的运维工作,尤其在自动化运维方面有着非常丰富的经验.同时热衷于互联网前沿技术的研究,活跃在国内社区.业界技术大会,充当一名开源技术的传播与分享者. 导言 受 Reboot

运维自动化神器ansible之user模块

运维自动化神器ansible之user模块 一.概述 ?user模块 可管理远程主机上的 用户,比如创建用户.修改用户.删除用户.为用户创建密钥对等操作. 二.参数介绍 ? name: 用于指定操作的 user,必须项. uid: 用于指定 user 的 UID,默认为空. _non_unique:_ 与uid参数一起使用,允许改变UID为非唯一值. group: 参数用于指定用户 主组.默认值为空,为空时创建的用户组名跟用户名一致. groups: 参数用于指定用户属组,可以在创建用户时指定用

&lt;zz&gt;Ansible 运维自动化 ( 配置管理工具 )

from http://www.cnblogs.com/wangxiaoqiangs/p/5685239.html 简介: 当下有许多的运维自动化工具( 配置管理 ),例如:Ansible.SaltStack.Puppet.Fabric 等. Ansible 一种集成 IT 系统的配置管理.应用部署.执行特定任务的开源平台,是 AnsibleWorks 公司名下的项目,该公司由 Cobbler 及 Func 的作者于 2012 年创建成立. Ansible 基于 Python 语言实现,由 Pa

运维自动化之salt笔记

1:saltstack的基本介绍 2:salt的安装 1:服务端1:安装2:配置文件3:运行4:注意事项2:客户端1:安装2:配置文件3:运行4:注意事项 3:salt的使用: 1:基础知识1:targeting2:nodegroup3:grains4:pillar2:状态管理1:state1:state语法2:state的逻辑关系2:highstate3:salt schedule3:实时管理1:cmd.run2:module4:其他1:无master2:peer3:runner4:react

【有感而发】从中华武术谈运维工程师以及运维自动化

从中华武术谈运维工程师以及运维自动化 任何事物都没有完美一说,但是我们可以死磕自己,追求极致... 无论我们现在是搬砖呢,砌墙呢,还是在逗自己混日子,我们需要关注的是自己的方向在哪里,而不是过于在意自己当前的所站的位置,人生不能受限于自己的意识. 平时和小伙伴们聊人生谈理想的时候,我会经常和别人讲我所认为的专业化运维工程师和运维工作的方向,有认可的也有不认可的,认可的多在努力让自己的工作越来越轻松,自己的价值越来越能得到体现,不认可者多属于一天都很忙,而且认为运维就是帮开发人员打打杂,做大量重复