首先,我想在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,就像下面一样
我们现在就可以把这玩意放进去了
但是,我第一次放过去的路径是’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'))
输出
关于nmap.nmap.PortScannerError: 'nmap program was not found in path的问题解决
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
整篇下来是一步步做的,显得会有些废话,我也是第一次用python的nmap,所以在排错过程中的一些理解错误,望包涵