Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 2.7 调用python nmap PortScanner(),找不到nmap_Python 2.7_Virtualenv_Nmap_Sys - Fatal编程技术网

Python 2.7 调用python nmap PortScanner(),找不到nmap

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。您

在我的virtualenv中,我安装了python nmap,并且安装了nmap(OS X)。 但如果我像(virtualenv激活…)一样调用mmap:

我得到以下错误:

Raise PORTSCANNERROR('路径中未找到nmap程序')

nmap.nmap.PortScannerError:“在路径中找不到nmap程序”

还有其他方法可以输入nmap的路径吗

控制Python解释器查找导入模块的位置。错误中的“path”是操作系统的
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]*)