zoukankan      html  css  js  c++  java
  • 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+'
    ')
            except Exception as e:     # 有的无法正向解析的设备报错后,保证程序正常运行
                print('cannot lookup')
                f2.write(host + '->' + 'nofound' + '
    ')
                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) + '
    ')
                except socket.herror as e:
                    f2.write(i + '->' + 'nofound' + '
    ')
    反向解析

    三、结果

    正向解析:host-ip.txt
    servername->xxx.xxx.xxx.xxx
    反向解析:ip-host.txt
    172.xxx.xxx.xxx->bogon  
  • 相关阅读:
    前端与算法 leetcode 344. 反转字符串
    JavaScript闭包使用姿势指南
    前端与算法 leetcode 48. 旋转图像
    前端与算法 leetcode 36. 有效的数独
    前端与算法 leetcode 1. 两数之和
    前端与算法 leetcode 283. 移动零
    前端与编译原理 用js去运行js代码 js2run
    前端与算法 leetcode 66. 加一
    前端与算法 leetcode 350. 两个数组的交集 II
    前端与算法 leetcode 26. 删除排序数组中的重复项
  • 原文地址:https://www.cnblogs.com/ld1977/p/7152897.html
Copyright © 2011-2022 走看看