公司最近接手的一家跨国企业的项目,该企业单域、多站点,且遍布美国、巴西、日本、东京、新加坡等多个国家,服务器及客户端计算机数量庞大。由于处理一些特殊故障,需要找出一些不在域中的网络设备及存储、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正向解析与反向解析域中主机的更多相关文章

  1. Django 正向解析与反向解析

    正向解析就是按照顺序查找访问(urls.py---view--templates) 反向解析就是根据命名空间命名来调到指定的页面 用反向解析的原因: 随着功能的增加会出现更多的视图,可能之前配置的正则 ...

  2. DNS的正向解析与反向解析

    DNS域名解析服务(Domain Name System)是用于解析域名与IP地址对应关系的服务,功能上可以实现正向解析与反向解析: 正向解析:根据主机名(域名)查找对应的IP地址. 反向解析:根据I ...

  3. DNS正向解析与反向解析

    DNS:(Domain Name System,域名系统),因特网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网, 而不去记住能够被机器直接读取的IP数串.通过主机名,最 ...

  4. DNS BIND配置 配置基本缓存服务器 DNS正向解析 DNS反向解析

    一. 缓存服务器配置 1.DNS:BIND    Berkeley Internet Name Domain    版本bind97: RPM服务器端包的名字  安装bind-libs    bind ...

  5. Django正向解析和反向解析

    转载:https://blog.csdn.net/jeekmary/article/details/79673867 先创建一个视图界面 urls.py index.html index页面加载的效果 ...

  6. Bind+DLZ+MySQL智能DNS的正向解析和反向解析实现方法

    使用文本配置文件的配置方式结合bind的最新的acl和view特性来实现智能DNS想必很多人已经很熟悉了,使用MySQL数据库来存放zone文件的方式可能也不少.对于两者都熟悉的,实现 Bind+DL ...

  7. django反向解析和正向解析

    Django的正向解析和反向解析 先创建一个视图界面 urls.py index.html index页面加载的效果 正向解析 test/?result=1 所谓正向解析就是直接在这里写地址 向url ...

  8. 使用Bind提供域名解析服务(反向解析)

    小知识: 一般来讲域名比IP地址更加的有含义.也更容易记住,所以通常用户更习惯输入域名来访问网络中的资源,但是计算机主机在互联网中只能通过IP识别对方主机,那么就需要DNS域名解析服务了. DNS域名 ...

  9. DNS服务反向解析实验

    DNS域名解析服务是用于解析域名与ip地址对应关系的服务,功能上可以实现正向解析和反向解析 正向解析:根据主机名(域名)查找对应的IP地址. 反向解析:根据IP地址查找对应的主机名(域名). 下面我来 ...

随机推荐

  1. HTTP协议②缓存

    首先介绍一下HTTP的报文信息,主要分成两个部分 1.包含属性的首部(header)---------------附加信息(cookie,缓存信息等)与缓存相关的规则信息,均包含在header中 2. ...

  2. (转载) poj1236 - Network of Schools

    看到一篇挺好的代码,适合初学者,转载自 博主 wangjian8006 原地址:http://blog.csdn.net/wangjian8006/article/details/7888558 题目 ...

  3. 【python之路16】lambda表达式

    1.lambda表达式,实际是建立一个简易的函数 下面代码中f1和f2表示是相同过程的代码 def f1(args): return args f2 = lambda args:args print( ...

  4. 问题解决:listview多次调用addHeaderView和addFooterView

    情景: 有两个分类,每个分类下的数据用listview显示,分类1需要显示头视图和尾视图,分类2不要显示头视图和尾视图 .两个分类可以来回切换. 实现的步骤: 1. addHeaderView . a ...

  5. placeholder改变输入框字体颜色

    ::-webkit-input-placeholder {  color: #888;}:-moz-placeholder {  color: #888;}::-moz-placeholder{col ...

  6. Django创建对象的create和save方法

    Django的模型(Model)的本质是类,并不是一个具体的对象(Object).当你设计好模型后,你就可以对Model进行实例化从而创建一个一个具体的对象.Django对于创建对象提供了2种不同的s ...

  7. unity如何查找某个脚本挂在了哪些物体上

    在开发中往往会遇到一个问题:不知道整个场景中究竟有哪些物体挂载了某一个脚本.如果挨个查找太麻烦了,下面有一种方法可以快速找到解决这个问题. 在unity的Window里有一项Editor tests ...

  8. Bigdecimal 相加结果为0的解决

    之前很少使用这样的一个对象BigDecimal,今天在改需求的时候遇到了,结果坑爹的怎么相加最后都为零. 代码如下: BigDecimal totalAmount = new BigDecimal(0 ...

  9. fusion-io工具--更换fusion-ioSSD无法识别及升级指引

    centos6.5系统,(含fusion-io共7块盘)库存的fusion-io卡需要升级固件才能识别 现在只认到6个盘 fdisk -l 2>/dev/null | grep 'Disk /d ...

  10. Redis → 下载安装及启动

    一.Window 下安装 下载地址:https://github.com/MSOpenTech/redis/releases Redis 支持 32 位和 64 位.这个需要根据你系统平台的实际情况选 ...