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  
  • 相关阅读:
    thinkPHP 远程数据库和远程连接数据库表名大小写混合
    浏览器兼容性的问题
    input 的那些事
    jquery ui draggable失效的问题
    thinkphp在php5.6以上版本显示"No input file specified"
    ajax dataType
    DOM对象的处理
    ubuntu 16.4 中eth0添加ip地址,且可以上网
    linux 安装phpstudy
    select样式清除
  • 原文地址:https://www.cnblogs.com/ld1977/p/7152897.html
Copyright © 2011-2022 走看看