8

哪里有问题?

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'"
4

10 回答 10

12

对于 Windows 用户:

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

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

pip uninstall python-nmap

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

nmap

从你的开始菜单。如果安装了,继续下一步,如果没有,到Nmap的官方下载页面

下载Windows自安装并运行它。记录它被安装到的目录。

转到那个目录。对我来说是

C:\Program Files (x86)\Nmap

打开系统的环境变量编辑器,通常位于

My PC > System Information > Advance settings > Environment Variables

或者右键

我的电脑或我的电脑或任何你的电脑,然后选择属性然后高级设置,然后在高级选项卡底部的环境变量

选择Path两者YouSystem

按下Edit并输入full path to your Nmap director

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

按确定并退出编辑器。

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

于 2015-11-04T23:15:38.477 回答
11

python-nmap似乎取决于nmap,这是执行实际网络扫描和审计的二进制文件。

如果 nmap 在您的终端中,您$PATH可以使用以下命令签入终端:

 which nmap

类 Debian

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

apt-get install nmap

拱Linux:

pacman -Sy nmap

已安装nmap

如果您确定nmap二进制文件已安装,但您认为它不在$PATH您的$PATH.

为此,请编辑.bashrc用户目录中的文件,或者/etc/bashrc(对于所有用户都会更改)并添加以下内容:

export PATH="$PATH:/usr/local/nmap/bin"

但更改/usr/local/nmap/bin安装 nmap 二进制文件的目录。更改文件后,请务必打开一个新的 shell 会话,或键入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则已安装并在您的$PATH.

于 2014-04-28T19:34:01.520 回答
1

我曾经也有过一样的问题。只需输入终端:

sudo apt-get install nmap

问题解决了。

于 2014-06-12T08:08:31.050 回答
0

尝试运行时遇到类似问题nm= nmap.PortScanner()

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

$ brew install nmap.

现在nm= nmap.PortScanner()运行没有先前的错误。

于 2015-03-24T05:20:53.847 回答
0

使用 Jessy lite 在 Raspberry Pi 3 上运行

我不得不:

sudo apt-get update

sudo apt-get upgrade

那么我可以:

sudo apt-get install nmap

nmap --version
于 2016-12-11T11:04:34.473 回答
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 中

我来自: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)
于 2016-12-14T14:34:45.840 回答
0

windows下必须先安装nmap for windows,可以通过这个链接安装https://nmap.org/download.html

于 2018-07-13T22:25:00.843 回答
0

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

于 2020-05-18T12:39:26.157 回答
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

你准备好了。

于 2021-01-04T19:45:26.020 回答
0

对于 Windows:我发现这很有帮助:

choco install nmap

如果可能 Powershell 我假设你已经完成了,你必须在提升的命令下运行它pip install python-nmap

于 2021-12-17T09:01:54.217 回答