用python修改dns解析檔案

2021-08-13 10:14:01 字數 1908 閱讀 5912

需求:網域名稱和ip的檔案,由於網域名稱不變,但是 nslookup 解析出來的 ip 有可能會變化,所以通過解析網域名稱,將ip提取出來,替換原檔案中ip位址

一、指令碼內容

#!/usr/bin/env python

#-*- coding:utf-8 -*-

#linux 的 nslookup 需要安裝軟體包 yum -y install bind-utils

import os,re,subprocess

def 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 none

****** = ['sms.abc.com','qq.cgf.com','weixin.abc.com']

for i in ******:

#將解析的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\.\d\.\d\.\d', new_ip, line)

wf.write(line)

os.rename('aa1.txt', 'aa.txt')

指令碼不足之處:沒有判斷解析出來的ip和原始檔中的ip在對應的網域名稱下有無更改,直接將解析結果寫入檔案中

擴充套件:獲取ip位址也可以用socket

#!/usr/bin/env python

#-*- coding:utf-8 -*-

import socket

****** = ['sms.abc.com','qq.cgf.com','weixin.abc.com']

for i in ******:

new_ip = socket.getaddrinfo(i,80)[0][4][0]

print(new_ip)

二、效果圖

DNS解析工具dig,nslookup的用法

常用的dns解析工具有dig,nslookup,本章將對這兩個工具進行用法的解析,先來介紹一下未來將會用的最多的dig,dig命令的語法格式為 dig server name type 以下為dig工具的使用方法 使用114.114.114.114這個dns伺服器來解析www.baidu.com的a...

NameCheap網域名稱管理解析 DNS修改實戰教程

上週作為網域名稱註冊商程式設計客棧之一的namecheap推出1.99程式設計客棧美元網域名稱優惠碼,很多新手站長也都註冊了屬於自己的優惠網域名稱。看到不少朋友在站長論壇提出 後台比較陌生,找不到網域名稱如何解析或者是更換dns的方法。現在我實程式設計客棧戰 分享給大家詳細的namecheap網域名...

用 python 解析歌詞

2.解析歌詞 musiclrc 00 03.50 傳奇 00 19.10 作詞 劉兵 作曲 李健 00 20.60 演唱 王菲 00 26.60 04 40.75 02 39.90 00 36.25 只是因為在人群中多看了你一眼 04 49.00 02 47.44 00 43.69 再也沒能忘掉你容...