公司最近接手的一家跨国企业的项目,该企业单域、多站点,且遍布美国、巴西、日本、东京、新加坡等多个国家,服务器及客户端计算机数量庞大。由于处理一些特殊故障,需要找出一些不在域中的网络设备及存储、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. 在 IE 选项那提示 ”某些设置由系统管理员进行管理” 解决

    运行 regedit 打开注册表 修改注册表值HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\CurrentVersion\Interne ...

  2. CentOS 7安装与配置Tomcat8

    1.下载安装包并上传服务器 2.解压 tar -zxvf apache-tomcat-8.5.16.tar.gz -C /opt/java 3.启动 cd /opt/java/apache-tomca ...

  3. 2019.10.21 csp-s模拟测试81 反思总结

    T1: 把每一行状压,按行DP.设fi,j,k,i表示第几行,j是当前行的1覆盖状态,k是当前行选择按钮的状态.转移的时候枚举j和k,再枚举下一层的按钮选择情况l.如果l和j可以全覆盖当前层则转移合法 ...

  4. vue 使用 element ui动态添加表单

    html部分 <div class="hello"> <el-form :model="dynamicValidateForm" ref=&q ...

  5. Django用户登陆以及跳转后台管理页面3

    Django用户登陆以及跳转后台管理页面1http://www.cnblogs.com/ujq3/p/7891774.html Django用户登陆以及跳转后台管理页面2http://www.cnbl ...

  6. 2018.8.6 模拟赛 提高组B

    T1 Description 给定一个n个点m条边的有向图,有k个标记点,要求从规定的起点按任意顺序经过所有标记点到达规定的终点,问最短的距离是多少. Input 第一行5个整数n.m.k.s.t,表 ...

  7. NLTK的探索

    import nltk import random from nltk.corpus import movie_reviews documents = [(list(movie_reviews.wor ...

  8. freemarker 取值(插值)(转)

    Java数据模型 1)基本数据类型取值 八种基本的java类型:byte.short.int.long:float,double:char:boolean 对应的封装类型:Byte.Short.Int ...

  9. java 3类的继承

    模板类 泛型程序设计方法 类的组合 类的继承 java只有单继承 隐藏和覆盖 用super.x调用 访问静态属性 静态属性不继承 静态成员只有一个,不会有副本 静态成员只有一个所有的超类和子类 方法的 ...

  10. 去掉goland中间的令人烦躁的竖线

    去掉“configured in code Style options”前面的勾即可.