所以我目前正在使用python的nmap库只是为了了解python3中的库。 documentation使用我已实现的 nmap.PortScanner()。
我的问题是,是否可以确定 nmap.PortScanner()在扫描过程中的距离,还是可以让用户知道它仍在扫描? 在 nmap.PortScannerAsync()中,有一种方法可以做到这一点,即: nmap.still_scanning()。
我将使用 nmap.PortScannerAsync(),但是我需要在 nmap.PortScanner()中使用方法。
任何帮助将不胜感激。
〜Kyhle
答案 0 :(得分:1)
因此,我设法找到了一个可行的解决方案。我仍然会尝试做得更好,但是我认为我应该采用一种临时解决方案,以防有人遇到同样的问题。
所以我的想法是,如果您想查看进度,则扫描过程可能需要在单独的线程中,因为我不知道一种挂接到.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...')
此解决方案的灵感来自于另一篇有关多线程的文章,我认为我在stackoverflow上看到过,但在发布此书时找不到。
希望这可以帮助处于类似位置的人。
〜Kyhle