【问题标题】:Python: How to find HostName with IP using specific DNS server?Python:如何使用特定的 DNS 服务器查找带有 IP 的主机名?
【发布时间】:2021-12-16 05:41:50
【问题描述】:

上下文:

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

问题是:

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

我尝试过的:

我已经尝试过 dns.resolver、socket.gethostbyaddr 等等,但它似乎不起作用...

提前致谢!

【问题讨论】:

  • 1) 无法保证您拥有将 IP 地址映射回主机名的 PTR 记录。 2)如果您的 DNS 服务器因 50000 个请求而崩溃,这是一个问题,尝试解决此问题可能会更快 3)“我尝试过......但它似乎不起作用”。您将需要显示更多代码来证明您正在尝试什么。 Pythondns 模块完全可以满足你的需求。
  • 请提供足够的代码,以便其他人更好地理解或重现问题。

标签: python dns ip


【解决方案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")

【讨论】:

    猜你喜欢
    • 2011-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-07
    • 1970-01-01
    • 1970-01-01
    • 2018-10-14
    • 1970-01-01
    相关资源
    最近更新 更多