[英]Python script to collect all hostnames of ip addresses with only prime entities
[英]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.