《关于想在Pycharm下使用nmap然后报错nmap.nmap.PortScannerError: ‘nmap program was not found in path.然后解决的那些事》

首先,我想在pycharm下用nmap我遇到了一个错误,这半天就这么没了

在pycharm

我输入了

import nmap
nm=nmap.PortScanner()

报错:

Traceback (most recent call last):
  File "F:/xx的python/next.py", line 2, in <module>
    nm=nmap.PortScanner()
  File "F:\xx的python\venv\lib\site-packages\nmap\nmap.py", line 133, in __init__
    raise PortScannerError(
nmap.nmap.PortScannerError: 'nmap program was not found in path. PATH is : F:\\娓╀繆褰\ue102殑python\\venv\\Scripts;F:\\Xshell\\;C:\\Windows\\system32;C:\\Windows;C:\\Windows\\System32\\Wbem;C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\;C:\\Windows\\System32\\OpenSSH\\;C:\\Program Files (x86)\\NVIDIA Corporation\\PhysX\\Common;C:\\Program Files\\NVIDIA Corporation\\NVIDIA NvDLISR;C:\\Users\\20459\\AppData\\Local\\Microsoft\\WindowsApps;F:\\娓╀繆褰\ue102殑python\\venv\\Scripts\\Nmap'

这一看,就是关于环境的,根据上面的F:\xx的python\venv\lib\site-packages\nmap\nmap.py 找到nmap.py

class PortScanner(object):
    def __init__(self, nmap_search_path=('nmap',
                                         '/usr/bin/nmap',
                                         '/usr/local/bin/nmap',
                                         '/sw/bin/nmap',
                                         '/opt/local/bin/nmap',
                                         )):

但是这个时候我还不知道应该是什么问题,然后上网找了一下,发现了一些头绪

我想到,这变量里面是不是得插入nmap这个软件的路径啊,抱着试一试的心情,我把我机子上的nmap路径整了过去,我觉得可以把nmap这个玩意给加进去,下面附上nmap的下载链接

https://nmap.org/dist/nmap-7.80-setup.exe

下载好之后,我们去路径下看nmap,就像下面一样
《关于想在Pycharm下使用nmap然后报错nmap.nmap.PortScannerError: ‘nmap program was not found in path.然后解决的那些事》
我们现在就可以把这玩意放进去了

但是,我第一次放过去的路径是’F:\xxpython\venv\Scripts\Nmap\zennmap.exe’

如下

 def __init__(self, nmap_search_path=('nmap',
                                         '/usr/bin/nmap',
                                         '/usr/local/bin/nmap',
                                         '/sw/bin/nmap',
                                         '/opt/local/bin/nmap',
                                         'F:\xx的python\venv\Scripts\Nmap\zennmap.exe')):

zennmap是nmap的图形化界面

插入这个,是错误的,我刚开始就是插入这玩意,导致最后面还得回来改,最后会有错误的描述,但是,单纯的插入这个,还是会报一个错误的,错误如下:

Traceback (most recent call last):
  File "F:/xx的python/next.py", line 1, in <module>
    import nmap
  File "F:\xx的python\venv\lib\site-packages\nmap\__init__.py", line 41, in <module>
    from .nmap import *  # noqa
  File "F:\xx的python\venv\lib\site-packages\nmap\nmap.py", line 86
    'F:\xx的python\venv\Scripts\Nmap\zennmap.exe')):
    ^
SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 67-68: malformed \N character escape

关于这个错误的解决,可以从网上找到,是关于转义符的,这边我也摆一个我觉得比较好问题解决链接
https://blog.csdn.net/xd060606/article/details/87164798?utm_medium=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-1.control&dist_request_id=&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-1.control
这边我是直接在前面加上r变成:

    def __init__(self, nmap_search_path=('nmap',
                                         '/usr/bin/nmap',
                                         '/usr/local/bin/nmap',
                                         '/sw/bin/nmap',
                                         '/opt/local/bin/nmap',
                                         r'F:\温俊彬的python\venv\Scripts\Nmap\zennmap.exe')):

这个问题解决,但是,上面留下的一个雷就炸开来了,还是报了之前环境变量的错误,但是我觉得按着这个问题解决是没有问题的,这时候,我想到了会不会是因为用了nmap的那个图形化应用的问题,大家也注意到,整个nmap里面是有两个运行程序的.
一个是nmap.exe
另一个是zenmap.exe
现在我们把namp.py的环境代码再改一下:

def __init__(self, nmap_search_path=('nmap',
                                     '/usr/bin/nmap',
                                     '/usr/local/bin/nmap',
                                     '/sw/bin/nmap',
                                     '/opt/local/bin/nmap',
                                     r'F:\xx的python\venv\Scripts\Nmap\nmap.exe')):

运行

import nmap
nm=nmap.PortScanner()
print(nm.scan('192.168.0.3','1-500','-sS'))

输出
《关于想在Pycharm下使用nmap然后报错nmap.nmap.PortScannerError: ‘nmap program was not found in path.然后解决的那些事》
关于nmap.nmap.PortScannerError: 'nmap program was not found in path的问题解决

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
整篇下来是一步步做的,显得会有些废话,我也是第一次用python的nmap,所以在排错过程中的一些理解错误,望包涵

上一篇:swarm集群实践(一):搭建环境


下一篇:vBox导入vdi文件uuid报错的解决办法