繁体   English   中英

使用python快速查找大量IP地址的所有主机名

[英]Quickly find all Hostnames for a large list of IP addresses with python

我有一个熊猫数据帧,其IP地址列包含约25k内部IP地址。 我正在尝试找到一种更快的方法来填写DNS名称列中缺少的主机名。 这是我目前正在使用的:

import pandas as pd
import os, sys


def get_DNS_name(IP):
    import socket
    name = socket.gethostbyaddr(IP)
    return name[0]
data_p = 'IT-inventory.csv'
inv = pd.read_csv(data_p.replace('~$',''))
DNSnames = []
IPIloc = inv.columns.get_loc("IP Address")
dnsIloc = inv.columns.get_loc('DNS Name')
for index, row in inv.iterrows():
    IP= str(row[IPIloc])
    print(IP)
    DNSname = str(row[dnsIloc])
    if DNSname is not None:
        try:
            DNSname = get_DNS_name(IP)
        except:
            pass
    DNSnames.append(DNSname)  
inv['DNS Name'] = DNSnames
inv

这个问题的症结在于,每个查询gethostbyaddr都需要花费几秒钟的时间,因此我考虑过尝试将所有记录从DNS服务器转储到本地计算机,然后进行合并,但是未能成功地做到这一点。 我也考虑过实施多处理以尝试增加并行查询的数量,但不知道这样做是否有帮助。 还担心我这样做可能会导致DOS无意中攻击DNS服务器。

有人知道更好的解决方案吗? 谢谢!

您可以使用多个DNS服务器来查询您的请求。 但是在1分钟内查询10个DNS服务器的25k个请求还不足以将其视为DOS攻击。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM