由于某种原因,我不能在python上使用nmap。我已经python-nmap
安装为库。每当我尝试使用PortScanner()
时,我都会收到路径错误,但我的计算机上安装了 nmap,它甚至在路径中。
import nmap
nm = nmap.PortScanner()
print(nm)
错误是
raise PortScannerError(
nmap.nmap.PortScannerError: 'nmap program was not found in path. PATH is : C:\Program Files (x86)\Common Files\Oracle\Java\javapath;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files\Microsoft SQL Server\130\Tools\Binn\;C:\nodejs\;C:\Program Files\dotnet\;C:\Program Files\Microsoft SQL Server\Client SDK\ODBC\170\Tools\Binn\;C:\Program Files (x86)\dotnet\;C:\Users\Anti\AppData\Local\Programs\Python\Python38\Scripts\;C:\Users\Anti\AppData\Local\Programs\Python\Python38\;C:\Program Files\Java\jdk-13.0.2\bin;C:\Users\Anti\Desktop\Selenium;C:\Users\Anti\Desktop\C++;C:\ffmpeg\bin;;C:\Users\Anti\AppData\Local\Programs\Microsoft VS Code\bin;C:\MinGW\bin;C:\Users\Anti\AppData\Roaming\npm;C:\Users\Anti\.dotnet\tools;C:\Program Files (x86)\Nmap'
如您所见,我的 nmap 文件在路径中。
C:\Program Files (x86)\Nmap
我尝试重新安装nmap并再次添加路径,没有任何变化。 我可以直接在cmd上使用nmap命令,没有任何问题。顺便说一句,我不使用virtualenv
.我该如何解决这个问题?
我知道这是旧线程。但是,如果有人正在寻找类似的答案。
@sushanth回答的是正确的。 它只需要列出:
nmap_path = [r"C:Program Files (x86)Nmapnmap.exe",]
scanner = nmap.PortScanner(nmap_search_path=nmap_path)
您需要在初始化时为nmap.exe
添加路径PortScanner
import nmap
nmap_path = r"C:Program Files (x86)Nmapnmap.exe"
nmap.PortScanner(nmap_search_path = nmap_path)
这篇文章有很大帮助,因为我遇到了同样的问题。 但仍有一些事情需要尊重:
- 确保nmap_path是列表或元组,而不是单个 str。
- 定义路径时,需要用前导点"> ."
import nmap # networ scanner "nmap" needs also the nmap tool from https://nmap.org/download
# nmap ping scan
#s_path=(r'C:Program Files (x86)Nmapnmap.exe',r'Nmapnmap.exe',r'nmap-7.92nmap.exe')
s_path=[r'Nmapnmap.exe',r'.nmap-7.92nmap.exe']
print(type(s_path))
nm = nmap.PortScanner(nmap_search_path = s_path) # alternative way with seld defined path
#nm = nmap.PortScanner() #standard way, if Nmap tool is installed correct from https://nmap.org/download
nm.scan(hosts="192.168.178.0/24",arguments="-sn")
ip_list=nm.all_hosts() #returns a list with all available IPs
print(ip_list)