Python:如何使用特定的 DNS 服务器查找带有 IP 的主机名?
Posted
技术标签:
【中文标题】Python:如何使用特定的 DNS 服务器查找带有 IP 的主机名?【英文标题】:Python: How to find HostName with IP using specific DNS server? 【发布时间】:2021-12-16 05:41:50 【问题描述】:上下文:
我有 50000+ ip 来自防火墙策略的内部网络计算机地址。 我正在尝试获取所有这些的主机名,使用一个特定的DNS服务器。
问题是:
我不想使用公司的主 DNS 服务器以避免崩溃和关闭生产。所以我想指定使用哪一个。
我尝试过的:
我已经尝试过 dns.resolver、socket.gethostbyaddr 等等,但它似乎不起作用...
提前致谢!
【问题讨论】:
1) 无法保证您拥有将 IP 地址映射回主机名的 PTR 记录。 2)如果您的 DNS 服务器因 50000 个请求而崩溃,这是一个问题,尝试解决此问题可能会更快 3)“我尝试过......但它似乎不起作用”。您将需要显示更多代码来证明您正在尝试什么。 Pythondns
模块完全可以满足你的需求。
请提供足够的代码,以便其他人更好地理解或重现问题。
【参考方案1】:
我们可以调用nslookup作为子进程,然后使用该函数指定要查询的DNS服务器。如果没有指定,您可以将 dns='YourDefaultDNSServer' 放在函数变量中以默认使用 DNS 服务器。
def reverseLookupDNS(ip, dns='X.X.X.X'):
a=subprocess.run(['nslookup',ip,dns],capture_output=True, text=True,
shell=True)
if a.stderr:
return None
else:
sortie=a.stdout
reponse=str(sortie).split(':')
host = reponse[3].strip(' ').split('\n')[0]
return host
然后
reverseLookupDNS('192.168.1.10')
使用函数参数中指定的默认服务器
或
reverseLookupDNS('192.168.1.10', "aDNSServer")
【讨论】:
以上是关于Python:如何使用特定的 DNS 服务器查找带有 IP 的主机名?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Python 中进行 DNS 查找,包括引用 /etc/hosts?