Python: 如何使用特定的 DNS 服务器查找具有 IP 的主机名?

Python: How to find HostName with IP using specific DNS server?

上下文:

我有 50000+ ip 个来自防火墙策略的内部网络计算机地址。 我正在尝试获取所有这些的主机名使用一个特定的 DNS 服务器

问题是:

我不想使用公司的主DNS服务器,以免崩溃和停产。所以我想指定使用哪一个。

我试过的:

我已经尝试了 dns.resolver、socket.gethostbyaddr 和其他几个,但似乎没有用...

提前致谢!

我们可以调用nslookup作为子进程,然后使用该函数指定要查询的DNS服务器。如果指定了 none,您可以将 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")