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

如何在Ubuntu 22.04的Bash脚本中判断WiFi密码是否错误?

如何在Ubuntu 22.04的Bash脚本中判断WiFi密码是否错误?

这个问题我之前配置Ubuntu服务器WiFi时也碰到过——单纯靠ping服务器确实没法区分密码错误和其他网络问题(比如信号弱、网关不可达)。在Ubuntu 22.04下,我们可以借助NetworkManager(或对应后端服务)的工具和日志来精准判断密码错误情况,下面给你几个实用方法:

方法一:用nmcli直接查询连接状态

Ubuntu 22.04桌面版默认用NetworkManager作为网络后端,哪怕你用netplan配置,最终也是交给它处理。nmcli是NetworkManager的命令行工具,能直接获取连接的错误信息:

  1. 先给系统留10-15秒完成连接尝试,再在脚本中加入以下代码:
# 替换成你的WiFi SSID
WIFI_SSID="你的WiFi名称"
# 获取对应连接的名称(可能和SSID一致,也可能自动生成)
CONNECTION_NAME=$(nmcli connection show | grep "$WIFI_SSID" | awk '{print $1}')

# 查询连接的自动连接错误信息
ERROR_INFO=$(nmcli connection show "$CONNECTION_NAME" | grep -i "autoconnect-error" | awk -F': ' '{print $2}')

if [[ "$ERROR_INFO" == *"invalid password"* ]]; then
    echo "⚠️  连接失败:WiFi密码不正确!"
elif [[ "$(nmcli device status | grep wlan0 | awk '{print $3}')" == "connected" ]]; then
    echo "✅  WiFi连接成功!"
else
    echo "❌  连接失败,但不是密码错误,可能是信号弱、网络不可达等其他原因"
fi

方法二:查看NetworkManager系统日志

NetworkManager会把所有连接细节记录到systemd的journal日志里,我们可以过滤日志定位密码错误:

# 查看最近1分钟内NetworkManager的日志,过滤密码错误相关关键词
PASSWORD_ERROR=$(journalctl -u NetworkManager.service --since "1 minute ago" | grep -i "invalid.*password\|authentication failed\|handshake failed")

if [[ -n "$PASSWORD_ERROR" ]]; then
    echo "⚠️  检测到密码错误:"
    echo "$PASSWORD_ERROR"
else
    # 再检查是否连接成功
    if nmcli device status | grep -q "wlan0.*connected"; then
        echo "✅  WiFi连接成功!"
    else
        echo "❌  连接失败,未检测到密码错误,请排查其他问题"
    fi
fi

注意:如果脚本没有sudo权限,可能无法查看完整日志内容,建议给脚本加上sudo或者在命令前加sudo。

方法三:针对systemd-networkd后端的情况

如果你的Ubuntu是服务器版,用networkd作为netplan后端(而非NetworkManager),这时会用wpa_supplicant管理WiFi连接,可以查看它的日志:

# 查看wpa_supplicant的日志,过滤密码错误相关内容
PASSWORD_ERROR=$(journalctl -u wpa_supplicant@wlan0.service --since "1 minute ago" | grep -i "invalid PSK\|authentication failed")

if [[ -n "$PASSWORD_ERROR" ]]; then
    echo "⚠️  WiFi密码错误,连接失败!"
else
    echo "✅  WiFi连接成功(或未检测到密码错误)"
fi

一些注意事项

  • 必须留足够的连接等待时间:刚运行netplan apply就立刻检查肯定得不到准确结果,建议等待10-15秒再执行判断逻辑。
  • 连接名称要准确:如果你的WiFi连接名称和SSID不一致,可以用nmcli connection list手动确认。
  • 权限问题:查看日志或某些nmcli操作可能需要sudo权限,记得在脚本里处理好权限。

备注:内容来源于stack exchange,提问作者Jason C

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.16 11:03:08