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")
上下文:
我有 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")