Python 2.7 调用python nmap PortScanner(),找不到nmap
在我的virtualenv中,我安装了python nmap,并且安装了nmap(OS X)。 但如果我像(virtualenv激活…)一样调用mmap: 我得到以下错误: Raise PORTSCANNERROR('路径中未找到nmap程序') nmap.nmap.PortScannerError:“在路径中找不到nmap程序” 还有其他方法可以输入nmap的路径吗 控制Python解释器查找导入模块的位置。错误中的“path”是操作系统的Python 2.7 调用python nmap PortScanner(),找不到nmap,python-2.7,virtualenv,nmap,sys,Python 2.7,Virtualenv,Nmap,Sys,在我的virtualenv中,我安装了python nmap,并且安装了nmap(OS X)。 但如果我像(virtualenv激活…)一样调用mmap: 我得到以下错误: Raise PORTSCANNERROR('路径中未找到nmap程序') nmap.nmap.PortScannerError:“在路径中找不到nmap程序” 还有其他方法可以输入nmap的路径吗 控制Python解释器查找导入模块的位置。错误中的“path”是操作系统的path环境变量,它告诉操作系统在哪里查找Nmap。您
path
环境变量,它告诉操作系统在哪里查找Nmap
。您可以直接使用设置,也可以在nmap.PortScanner
构造函数中传递到nmap
二进制文件的完整路径:
nm = nmap.PortScanner('/usr/local/bin/nmap')
将项目移植到Python3,并将nmap更新为0.3.3,现在它可以工作了
非常感谢 使用自制软件安装nmap
brew install nmap
然后您的安装将正常工作。我尝试了这些方法,但没有成功,然后我进一步研究了它 错误:
>>> import nmap
>>> nm = nmap.PortScanner()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/local/lib/python2.7/dist-packages/nmap/nmap.py", line 137, in __init__
raise PortScannerError('nmap program was not found in path')
nmap.nmap.PortScannerError: 'nmap program was not found in path'
我发现first regex不起作用,所以我更改了以下内容:
发件人:
regex = re.compile('Nmap version [0-9]*\.[0-9]*[^ ]* \( http://nmap\.org \)')
致:
现在,它的工作方式和预期的一样 nm=nmap.PortScanner('/usr/local/bin/nmap')返回:\uuu init\uuuu()正好接受1个参数(给定2个)@user2883656我可能正在查看支持此语法的python nmap包的较新版本。您使用哪个版本?我使用0.1.4,因为0.3.3只支持Python 3。但我将项目更改为Python 3,并将报告。@user2883656如果您需要支持Python 2,您可能需要签出(不是背书,我没有使用它)
# regex used to detect nmap
regex = re.compile('Nmap version [0-9]*\.[0-9]*[^ ]* \( http://nmap\.org \)')
# launch 'nmap -V', we wait after 'Nmap version 5.0 ( http://nmap.org )'
p = subprocess.Popen(['nmap', '-V'], bufsize=10000, stdout=subprocess.PIPE)
self._nmap_last_output = p.communicate()[0] # store stdout
for line in self._nmap_last_output.split('\n'):
if regex.match(line) is not None:
is_nmap_found = True
# Search for version number
regex_version = re.compile('[0-9]+')
regex_subversion = re.compile('\.[0-9]+')
rv = regex_version.search(line)
rsv = regex_subversion.search(line)
if rv is not None and rsv is not None:
# extract version/subversion
self._nmap_version_number = int(line[rv.start():rv.end()])
self._nmap_subversion_number = int(line[rsv.start()+1:rsv.end()])
break
if is_nmap_found == False:
raise PortScannerError('nmap program was not found in path')
regex = re.compile('Nmap version [0-9]*\.[0-9]*[^ ]* \( http://nmap\.org \)')
regex = re.compile('Nmap version [0-9]*\.[0-9]*)