Python Nmap 扫描程序进度

Python Nmap Scanner Progress

所以我目前正在使用 python 的 nmap 库,只是为了了解 python3 中的库。 documentation 使用我已经实现的 nmap.PortScanner()

我的问题是,有没有办法确定 nmap.PortScanner() 在扫描过程中有多远,或者有什么方法让用户知道它还在扫描? 在 nmap.PortScannerAsync() 中有一个方法可以做到这一点,即:nmap.still_scanning()

我会使用 nmap.PortScannerAsync(),但是我需要在 nmap.PortScanner()[=28= 中使用方法].

如有任何帮助,我们将不胜感激。

~凯尔

所以我想出了一个似乎可行的解决方案。我仍然会尝试让它变得更好,但我想我会提出一个临时解决方案,以防有人遇到同样的问题。

所以我的想法是,如果您想查看进度,扫描过程可能需要在单独的线程中进行,因为我不知道有什么方法可以连接到 .scan() 方法。为此,导入了以下库:

from threading import Thread

那是第 1 步。从那里我需要确定如何将扫描过程实际放入一个线程中,因为我对使用多个线程不感兴趣(我只想查看扫描的进度)。我发现有效的解决方案如下所示:

scan_thread = Thread(target=network_scan.scan, args=(ip_address, port_range,))
scan_thread.start()
while True:
    scan_thread.join(timeout=3)
    if not scan_thread.is_alive():
        break
    print('Nmap is still running...')

这个解决方案的灵感来自另一个 post 的多线程,我想我是在 Whosebug 上看到的,但我在 post 时找不到它。

希望这对处于类似情况的人有所帮助。

~凯尔