用python修改dns解析文件

来源:互联网 发布:php开发实例大全 编辑:程序博客网 时间:2024/06/10 03:37

需求: 域名和ip的文件,由于域名不变,但是 nslookup 解析出来的 ip 有可能会变化,所以通过解析域名,将ip提取出来,替换原文件中ip地址

一、脚本内容

#!/usr/bin/env python#-*- coding:utf-8 -*-#linux 的 nslookup 需要安装软件包 yum -y install bind-utilsimport os,re,subprocessdef panduan_ip(ip):    '''    判断ip是不是合法的ip,加入解析ip解析不出来,将会返回None    :param ip:    :return:    '''        try:        a,b,c,d = ip.strip().split('.')        if 0 < int(a) < 255 and 0 < int(b) < 255 and 0 < int(c) < 255 and 0 < int(a) < 255:            return ip    #except Exception as e:    #这个是python3的用法    except Exception,e:        #这个是python2的用法            return Noneyuming = ['sms.abc.com','qq.cgf.com','weixin.abc.com']for i in yuming:    #将解析的ip提取出来    new_ip = subprocess.Popen('echo %s | nslookup | grep -v "#53" | grep "Address" | cut -d" " -f2 | sort |head -1' %i ,shell=True,stdout=subprocess.PIPE).stdout.read().strip()    if len(new_ip) == 0: continue       #如果解析的ip为空,跳出这个循环    new_ip = panduan_ip(new_ip)         #判断解析的ip是否是真实ip    if new_ip == None :continue    with open('aa.txt', 'r') as rf:         #将源文件以读的模式打开        with open('aa1.txt', 'w') as wf:    #打开新的文件            for line in rf.readlines():                if i in line:                    #将源文件中的ip替换为解析出来的ip                    line = re.sub('\d{0,3}\.\d{0,3}\.\d{0,3}\.\d{0,3}', new_ip, line)                wf.write(line)    os.rename('aa1.txt', 'aa.txt')

脚本不足之处: 没有判断解析出来的ip和源文件中的ip在对应的域名下有无更改,直接将解析结果写入文件中

二、效果图

这里写图片描述

原创粉丝点击