Python主机名解析

2024-10-06 13:32:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试建立一个小的网络扫描我的家庭网络。 为了解析主机名,我想使用这个在for循环中调用的函数,该循环遍历一系列ip。这很好,但是我认为gethostbyaddr(tgtHost)函数非常慢。有没有办法加快速度或使用其他功能?在

def fn_hostscan(tgtHost):

    response = os.system("ping -n 1 " + tgtHost + "> C:\\temp\log.txt")

    if response == 0:
        try:
            tgtName = gethostbyaddr(tgtHost)
            print("\n[+] " + tgtHost + " = " + tgtName[0])
        except:
            dummy = 0
    else:

    print("\n[-]" + tgtHost + " = None found") 

Tags: 函数功能ip网络forresponsedef主机名
2条回答

gethostbyaddr和类似函数取决于决议.conf(见http://linux.die.net/man/5/resolv.conf)。在

  1. 你的DNS解析程序很慢(尝试使用Google的公共DNS)
  2. 有些IP没有PTR记录或其NS处于脱机状态,默认超时为5秒-在“循环”时请记住这一点

为了提高性能,您可能需要并行化它,请使用快速解析程序并将超时设置保持在最小值。在

如果可以,请使用类似于http://c-ares.haxx.se/的libs

看看这有什么好处:

你的目的是为了这个?- Finding local IP addresses using Python's stdlib

import socket 
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.connect(("gmail.com",80))
print(s.getsockname()[0])
s.close()

相关问题 更多 >