首页 > 代码库 > Python3.6正向解析与反向解析域中主机
Python3.6正向解析与反向解析域中主机
公司最近接手的一家跨国企业的项目,该企业单域、多站点,且遍布美国、巴西、日本、东京、新加坡等多个国家,服务器及客户端计算机数量庞大。由于处理一些特殊故障,需要找出一些不在域中的网络设备及存储、NBU等在DNS服务器中是否有正向解析与反向解析的记录,手工查看限于数量较多无法实现,因此想到了编写了Python脚本。
一、 功能描述:
1. 分为两个功能,正向解析与反向解析
2. 正向解析查询,根据文件中写入的设备或机器名称,查询IP地址,并打开host-ip.txt,以host->ip的格式写入该文件,无法解析的,使用host->nofound写入。
3. 反向解析查询,根据正向解析中查询结果文件host->ip.txt,截取IP地址部分,然后以ip->host格式写入该文件,无法解析的,还是使用ip-nofound写入。
二、代码
import socket ho_list = [] # 用于保存文件读取内容的机器名,列表类型 with open(‘hostna.txt‘,‘r‘) as f1: for i in f1.readlines(): # print(i) ho_list.append(i.strip()) print(ho_list) with open(‘host-ip.txt‘,‘w‘) as f2: for host in ho_list: print(host) try: ip = socket.getaddrinfo(host,None)[0][4][0] # 只保留IP部分 # print(ip) f2.write(host+‘->‘+ip+‘\n‘) except Exception as e: # 有的无法正向解析的设备报错后,保证程序正常运行 print(‘cannot lookup‘) f2.write(host + ‘->‘ + ‘nofound‘ + ‘\n‘) continue
import socket ip_list = [] # 用于保存读取文件中的IP地址部分,类型列表 with open(‘host-ip.txt‘,‘r‘) as f1: for i in f1.readlines(): sp = i.split(‘->‘)[1] # print(i.split(‘->‘)[1]) ip_list.append(sp.strip()) # print(ip_list) with open(‘ip-host.txt‘,‘w‘) as f2: for i in ip_list: print(i) if i == ‘nofound‘: continue else: try: host = socket.gethostbyaddr(i)[0] # 只取主机名部分 f2.write(i + ‘->‘ + str(host) + ‘\n‘) except socket.herror as e: f2.write(i + ‘->‘ + ‘nofound‘ + ‘\n‘)
三、结果
正向解析:host-ip.txt
servername->xxx.xxx.xxx.xxx
反向解析:ip-host.txt 172.xxx.xxx.xxx->bogon
Python3.6正向解析与反向解析域中主机
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。