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

将网卡设置为监听模式:monitor.sh脚本8、12行报错求助

问题诊断与解决

这个错误是Bash脚本里条件判断的语法格式问题导致的,算是新手写脚本时很常见的坑。在Bash中,[ 是test命令的别名,属于独立的系统命令,它和后面的变量、参数之间必须用空格分隔;同时结尾的]前面也必须加空格。你的报错提示[iface: command not found,说明脚本里把[和变量iface连在一起写了,系统把[iface当成了一个不存在的命令执行,自然就报错了。

错误场景示例

假设你脚本里的条件判断是类似这样的写法:

if [iface == "wlan0"]; then
  # 你的操作逻辑
fi

这种写法就违反了Bash的语法规则,直接触发了报错。

修正方案

你需要调整条件判断的格式,在[后、]前都加上空格,同时为了避免变量为空或包含特殊字符时出现异常,建议给变量套上双引号:

if [ "$iface" == "wlan0" ]; then
  # 你的操作逻辑
fi

如果想让判断逻辑更严谨,也可以使用Bash专属的[[ ]]语法(它对空格的要求没那么严格,但依然推荐保持空格习惯,同时支持更丰富的字符串匹配功能):

if [[ "$iface" == "wlan0" ]]; then
  # 你的操作逻辑
fi

完整修正后的脚本示例

这里给你一个可直接参考的监听模式设置脚本,包含正确的变量判断和网卡操作逻辑:

#!/bin/bash

# 定义要操作的网卡接口
iface="wlan0"

# 先判断网卡变量是否为空
if [ -z "$iface" ]; then
  echo "错误:未指定有效的网卡接口"
  exit 1
fi

# 执行监听模式设置流程
sudo ifconfig "$iface" down
sudo iwconfig "$iface" mode monitor
sudo ifconfig "$iface" up

# 验证设置结果
iwconfig "$iface" | grep "Mode:Monitor"
if [ $? -eq 0 ]; then
  echo "✅ 成功将$iface设置为监听模式"
else
  echo "❌ 设置监听模式失败,请检查网卡是否支持监听模式"
fi

额外注意事项

  • 脚本开头必须加上#!/bin/bash,指定用Bash作为解释器
  • 操作网卡需要管理员权限,运行脚本时记得加上sudo,比如sudo ./monitor.sh
  • 如果你的系统默认使用ip命令替代老旧的ifconfig/iwconfig,可以把相关命令替换为:ip link set "$iface" down、iw dev "$iface" set type monitor、ip link set "$iface" up

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 08:56:27