You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Mac Ventura系统下Nmap程序未在路径中找到,如何解决?

解决Python调用nmap提示“Nmap program was not found in path”的问题

核心原因

系统未安装nmap,或者nmap的可执行文件路径不在当前的PATH环境变量中。

分步解决

1. 检查是否安装了nmap

打开终端,输入以下命令:

nmap -v

如果终端提示command not found,说明还没装nmap,直接跳到步骤2;如果能显示nmap版本信息,说明已安装,跳到步骤3。

2. 安装nmap

Mac上最方便的是用Homebrew安装:

  • 先确认有没有Homebrew,终端输brew -v,没装的话执行:
    /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
    
  • 安装nmap:
    brew install nmap
    

3. 将nmap路径加入PATH

如果已经装了nmap但还是报错,先找nmap的位置:

which nmap

会输出类似/usr/local/bin/nmap(Intel芯片Mac)或/opt/homebrew/bin/nmap(M系列芯片Mac)。

然后把这个路径所在的bin目录加入PATH:

  • 编辑shell配置文件(Mac Ventura默认用zsh,编辑~/.zshrc):
    open -e ~/.zshrc
    
  • 在文件末尾添加一行(把路径换成你刚才which nmap得到的目录):
    export PATH="$PATH:/opt/homebrew/bin"
    
  • 保存文件后,终端执行以下命令让配置生效:
    source ~/.zshrc
    

额外代码优化建议

你的代码里定义了port_range变量但没实际使用,反而循环扫描0-65535全端口,效率极低还容易触发大量异常。可以改成用nmap原生的端口范围扫描,代码调整如下:

import nmap

# 使用上下文管理器打开存储IP地址的文件
with open('devices_file') as f:
    devices_list = f.read().splitlines()

# 用户输入要扫描的端口范围
port_range = input("请输入'x-x'格式的端口范围 ")

nm = nmap.PortScanner()

for device in devices_list:
    print(f"正在检查 {device}")
    try:
        # 直接用nmap扫描整个端口范围,比自己循环高效
        result = nm.scan(device, port_range)
        # 遍历扫描到的端口状态
        for port in result['scan'][device]['tcp']:
            port_status = result['scan'][device]['tcp'][port]['state']
            print(f"端口 {port} 状态为 {port_status}")
    except Exception as e:
        print(f"扫描设备 {device} 时出错: {str(e)}")

内容的提问来源于stack exchange,提问作者Oscill

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 13:43:18