('未找到Nmap',<class'nmap.nmap.portscannererror'=“”>)</class>

时间:2013-03-11 10:04:14

标签: python

问题出在哪里?

import nmap

我安装了nmap和python,当我使用import nmap时没有任何问题。但是在使用时:

nmap.PortScanner()

抛出此错误:

Traceback (most recent call last):
  File "<pyshell#3>", line 1, in <module>
    nmap.PortScanner()
  File "./nmap/nmap.py", line 153, in __init__
    raise PortScannerError('nmap program was not found in path. PATH is:{0}'.format(os.getenv('PATH')))
nmap.nmap.PortScannerError: 'nmap program was not found in path. PATH is : /usr/lib    /lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:    /usr/local/games'"

9 个答案:

答案 0 :(得分:8)

对于Windows用户:

我建议首先关闭所有终端和IDLE或当前尝试运行脚本时打开的任何其他窗口。

接下来,打开命令行并输入

pip uninstall python-nmap

如果您不确定当前系统上是否安装了Nmap二进制文件,请执行简单搜索

nmap
从开始菜单中

。如果已安装,请继续执行下一步,否则请转至Nmap's official download page

下载Windows自安装并运行它。记录它正在安装的目录。

转到该目录。对我来说是

C:\Program Files (x86)\Nmap

打开通常在

中找到的系统环境变量编辑器
My PC > System Information > Advance settings > Environment Variables

或右键单击

  

我的电脑或我的电脑或其他任何电话被调用并选择属性然后提前设置然后在高级选项卡底部的环境变量

PathYou

选择System

Edit并输入full path to your Nmap director

例如;C:\Program Files (x86)\Nmap\

按确定并退出编辑器。

现在返回命令行并输入:pip install python-nmap 允许它安装然后重新启动ide并再次测试您的代码。

答案 1 :(得分:7)

python-nmap似乎依赖nmap,这是进行实际网络扫描和审核的二进制文件。

您可以使用以下命令检查终端中是否nmap在$PATH中:

 which nmap

Debian的状

您可以使用以下命令在类似debian的发行版中安装nmap:

apt-get install nmap

Arch linux:

pacman -Sy nmap

已安装nmap

如果您确定已安装nmap二进制文件,但您认为它不在$PATH中,则可能必须将安装了nmap的目录添加到{{1} }}

为此,请修改用户目录中的$PATH文件,或.bashrc(将为所有用户更改)并添加以下内容:

/etc/bashrc

但是为安装nmap二进制文件的目录更改export PATH="$PATH:/usr/local/nmap/bin" 。 更改文件后,请务必打开新的shell会话,或键入/usr/local/nmap/bin进行刷新。

您还必须确保它具有执行权限(exec bash)。

执行时:

chmod +x <file>

你应该看到这样的事情:

nmap --version

如果您这样做,Nmap version 6.46 ( http://nmap.org ) Platform: i686-pc-linux-gnu Compiled with: liblua-5.2.3 openssl-1.0.1g libpcre-8.34 libpcap-1.5.3 nmap-libdnet-1.12 ipv6 Compiled without: Available nsock engines: epoll poll select 已安装在nmap

答案 2 :(得分:1)

我遇到了同样的问题。只需输入一个终端:

sudo apt-get install nmap

问题解决了。

答案 3 :(得分:0)

尝试运行nm= nmap.PortScanner()

时遇到类似问题

我尝试了上面给出的大部分解决方案,但它们对我不起作用。对我有用的是使用home brew(信息:http://brew.sh)安装适用于Mac OS X的nmap并运行命令

$ brew install nmap.

现在nm= nmap.PortScanner()在没有早期错误的情况下运行。

答案 4 :(得分:0)

使用Jessy lite

在Raspberry Pi 3上运行

我必须:

sudo apt-get update

sudo apt-get upgrade

然后我可以:

sudo apt-get install nmap

nmap --version

答案 5 :(得分:0)

关于nmap的注意事项

我使用nmap搜索掩码192.168.1.0/24,但它没有找到所有ip的接缝。例如:我的笔记本电脑在192.168.1.119上找不到,所以我最终使用了以下组合:

def ping(self, ip):
    # Use the system ping command with count of 1 and wait time of 1.
    ret = subprocess.call(['ping', '-c', '1', '-W', '1', ip],
                          stdout=open('/dev/null', 'w'),
                          stderr=open('/dev/null', 'w'))

    return ret == 0 # Return True if our ping command succeeds

在多线程Pinger内部

Pinger我来自:http://blog.boa.nu/2012/10/python-threading-example-creating-pingerpy.html

我创建了自己的IpInfo类来存储信息并在每个IP上搜索开放端口,在这里我使用nmap :(代码是“正在进行中”,但你会得到这个想法。调整性能的想法会很好)

class IpInfo(object):
ip = None
hostname = None
ports = []
lastSeenAt = strftime("%Y-%m-%d %H:%M:%S", gmtime())


def findHostName(self):
    if(ip):
        self.hostname = str(socket.gethostbyaddr(ip)[0])
    else:
        raise NameError('IP missing')

def findOpenPorts(self):
    print('findOpenPorts')
    nm = nmap.PortScanner()
    nm.scan(host)
    nm.command_line()
    nm.scaninfo()

    for proto in nm[self.ip].all_protocols():
        print('----------')
        print('Protocol : %s' % proto)

        lport = nm[self.ip][proto].keys()   #<------ This 'proto' was changed from the [proto] to the ['tcp'].
        lport.sort()

        for port in lport:
            if(nm[self.ip][proto][port]['state'] == 'open'):
                self.ports.append(port)

答案 6 :(得分:0)

在Windows下,您必须先为Windows安装nmap ,然后才能使用此链接https://nmap.org/download.html

安装

答案 7 :(得分:0)

对于macOS用户,只需使用brew install nmap而不是pip

答案 8 :(得分:0)

我有一个完美的解决方案..

第一种类型:- apt-get remove nmap

然后 :- apt autoremove

然后 :- 转到www.pypi.org

输入python nmap并下载0.6版本

使用命令提取它:- tar -zxvf filename

cd 到新提取的文件

类型:- python setup.py install

然后

apt-get install nmap

你准备好了。