wpa_supplicant核心操作总结
参考Linux WPA/WPA2/WPA3/IEEE 802.1X Supplicant-CSDN博客Linux WIFI 驱动实验-CSDN博客Linux下的wifi开发_linux wifi-CSDN博客基础状态查询如下# 查看WiFi网卡状态wlan0为网卡名按需替换 wpa_cli -i wlan0 status # 扫描周边WiFi wpa_cli -i wlan0 scan # 查看扫描结果SSID、信号强度、加密方式 wpa_cli -i wlan0 scan_results # 查看已配置的网络列表显示网络ID、SSID、是否启用 wpa_cli -i wlan0 list_networks更多待补充连接网络使用wpa_cli指令来连接某个网络要怎么做1. 使用wpa_cli连接 WiFi 网络的完整步骤wpa_cli是用于控制wpa_supplicantWiFi 认证服务的命令行工具适用于 Linux 系统嵌入式 / 桌面端以下是通用且可直接执行的连接流程前置条件确保wpa_supplicant已运行后台服务且 WiFi 网卡已启用如wlan0知道 WiFi 的SSID网络名称和密码WPA/WPA2 加密以root权限执行嵌入式系统默认 root桌面端需加sudo。步骤 1进入 wpa_cli 交互模式推荐# 进入交互模式指定WiFi网卡通常是wlan0 wpa_cli -i wlan0进入后会看到提示符后续命令在交互模式内执行。步骤 2添加 WiFi 网络配置# 添加新的网络配置会返回网络ID如0 add_network # 设置WiFi名称SSID替换为你的网络名注意引号 set_network 0 ssid 你的WiFi名称 # 设置WiFi密码替换为你的密码注意引号 set_network 0 psk 你的WiFi密码 # 可选强制使用WPA2加密兼容多数网络 set_network 0 proto WPA2 set_network 0 key_mgmt WPA-PSK # 启用该网络配置 enable_network 0 # 保存配置到wpa_supplicant.conf避免重启后失效 save_config # 退出交互模式 quit步骤 3获取 IP 地址DHCP# 释放旧IP可选 dhclient -r wlan0 # 获取新IP核心步骤 dhclient wlan0 # 或嵌入式系统常用udhcpc -i wlan0步骤 4验证连接状态# 查看WiFi连接状态 wpa_cli -i wlan0 status # 测试网络连通性 ping 8.8.8.82. 非交互模式一键执行适合脚本如果不想进入交互模式可直接用单行命令批量执行# 替换SSID和密码一键配置并连接 wpa_cli -i wlan0 add_network /tmp/network_id \ wpa_cli -i wlan0 set_network $(cat /tmp/network_id) ssid \你的WiFi名称\ \ wpa_cli -i wlan0 set_network $(cat /tmp/network_id) psk \你的WiFi密码\ \ wpa_cli -i wlan0 enable_network $(cat /tmp/network_id) \ wpa_cli -i wlan0 save_config \ dhclient wlan03. 常见问题与解决提示Failed to connect to wpa_supplicant原因wpa_supplicant未运行或网卡名错误解决启动服务wpa_supplicant -B -i wlan0 -c /etc/wpa_supplicant.conf。连接后无 IP 地址原因DHCP 未获取到 IP解决重启 DHCP 客户端systemctl restart dhcpcd桌面端或udhcpc -i wlan0嵌入式。密码正确但认证失败原因加密方式不匹配如网络是 WPA配置了 WPA2解决删除加密强制配置让系统自动适配wpa_cli -i wlan0 set_network 0 proto WPA WPA2 wpa_cli -i wlan0 enable_network 0总结核心流程进入wpa_cli交互模式 → 添加网络 → 设置SSID/密码 → 启用网络 → 保存配置 → 获取DHCP IP交互模式适合手动操作非交互模式适合脚本批量执行连接后通过wpa_cli status验证状态ping测试网络连通性。wpa_cli指令里的0是啥意思在wpa_cli指令中你看到的数字0是WiFi 网络配置的唯一标识 IDNetwork ID可以把它理解为「WiFi 配置项的编号」核心作用是让wpa_supplicant知道你要操作哪一个 WiFi 配置因为系统中可以配置多个 WiFi。一、为什么会出现「0」当你用wpa_cli add_network添加新 WiFi 配置时wpa_supplicant会自动为这个新配置分配一个从 0 开始递增的数字 ID第一个配置是 0第二个是 1第三个是 2以此类推。后续所有针对这个 WiFi 的操作设置 SSID / 密码、启用 / 禁用、删除都需要通过这个 ID 指定操作对象。二、「0」的具体使用场景核心示例指令「0」的含义完整说明set_network 0 ssid MyWiFi操作 ID 为 0 的 WiFi 配置给编号 0 的 WiFi 配置项设置 SSIDWiFi 名称set_network 0 psk 123456操作 ID 为 0 的 WiFi 配置给编号 0 的 WiFi 配置项设置密码enable_network 0启用 ID 为 0 的 WiFi 配置让系统尝试连接编号 0 的 WiFidisable_network 0禁用 ID 为 0 的 WiFi 配置断开编号 0 的 WiFi 连接且不再自动连接remove_network 0删除 ID 为 0 的 WiFi 配置彻底删除编号 0 的 WiFi 配置项需 save_config 生效三、如何确认「0」对应的是哪个 WiFi如果不确定 ID 对应的 WiFi比如配置了多个可以用以下指令查看所有配置的 ID 和对应 SSID# 列出所有已配置的WiFi重点看第一列的ID、第二列的SSID wpa_cli -i wlan0 list_networks输出示例network id / ssid / bssid / flags 0 MyHomeWiFi any [ENABLED] 1 OfficeWiFi any [DISABLED] 2 PublicWiFi any [DISABLED]从输出能清晰看到ID0 对应「MyHomeWiFi」已启用ID1 对应「OfficeWiFi」已禁用此时操作enable_network 1就会切换到「OfficeWiFi」。四、关键注意事项ID 是临时 永久的添加配置时分配的 ID只要不删除配置重启wpa_supplicant后仍保持不变不一定必须是 00 只是「第一个添加的 WiFi」的默认 ID如果你添加第二个 WiFiID 会是 1操作时需用 1 替代 0无 ID 操作会报错比如直接执行set_network ssid MyWiFi少了 ID会提示「ERROR: invalid command arguments」因为系统不知道要操作哪个 WiFi。总结wpa_cli中的「0」是WiFi 配置项的 ID是操作特定 WiFi 的 “唯一标识”ID 由add_network自动分配从 0 开始递增可通过list_networks查看所有 ID 和对应 WiFi所有针对具体 WiFi 的操作设密码、启用 / 禁用、删除都必须指定这个 ID否则系统无法定位操作对象。每次添加一个wifi都要手动指定编号吗可以每次都用0吗核心结论不需要手动指定编号也不建议每次都强行用 0—— 编号Network ID是wpa_supplicant自动分配的强行复用 0 会导致旧配置被覆盖 / 冲突正确做法是用add_network获取自动分配的 ID再基于该 ID 操作。一、为什么不用手动指定编号add_network指令的核心作用就是自动生成唯一的 Network ID流程如下# 1. 执行add_network系统返回一个未被使用的ID首次是0第二次是1依此类推 wpa_cli -i wlan0 add_network # 输出示例0 首次添加/ 1第二次添加/ 2第三次... # 2. 直接用返回的ID配置WiFi无需手动想编号 wpa_cli -i wlan0 set_network 0 ssid WiFi1 # 首次自动分配0 wpa_cli -i wlan0 set_network 1 ssid WiFi2 # 第二次自动分配1手动指定编号完全没必要系统会保证 ID 的唯一性避免冲突。二、可以每次都用 0 吗不推荐1. 强行用 0 的两种场景及问题场景 1未删除旧的 0 号配置时复用 0若 0 号已配置过 WiFi1直接执行set_network 0 ssid WiFi2会覆盖 0 号的原有配置WiFi1 的配置被清空替换为 WiFi2相当于 “修改旧配置” 而非 “添加新配置”最终系统里只有 WiFi2WiFi1 的配置会丢失。场景 2先删除 0 号再复用 0虽然可以通过remove_network 0删除旧配置再重新add_network此时会重新分配 0但属于 “多此一举”且容易误操作比如忘记删除就复用导致配置覆盖。2. 强行用 0 的实操示例反面教材# 1. 首次添加WiFi1自动分配0 wpa_cli -i wlan0 add_network # 输出0 wpa_cli -i wlan0 set_network 0 ssid WiFi1 wpa_cli -i wlan0 enable_network 0 # 2. 想添加WiFi2强行用0未删除旧配置 wpa_cli -i wlan0 set_network 0 ssid WiFi2 # 覆盖WiFi1的配置 wpa_cli -i wlan0 enable_network 0 # 3. 查看配置列表只有WiFi2WiFi1已被覆盖 wpa_cli -i wlan0 list_networks # 输出0 WiFi2 any [ENABLED]三、正确的 “添加多个 WiFi” 姿势推荐无需关注 ID 数字让系统自动分配通过list_networks确认 ID 即可# 步骤1添加第一个WiFi自动分配ID0 NET_ID1$(wpa_cli -i wlan0 add_network) # 捕获自动分配的ID wpa_cli -i wlan0 set_network $NET_ID1 ssid WiFi1 wpa_cli -i wlan0 set_network $NET_ID1 psk Pass123 wpa_cli -i wlan0 enable_network $NET_ID1 # 步骤2添加第二个WiFi自动分配ID1 NET_ID2$(wpa_cli -i wlan0 add_network) wpa_cli -i wlan0 set_network $NET_ID2 ssid WiFi2 wpa_cli -i wlan0 set_network $NET_ID2 psk Pass456 wpa_cli -i wlan0 enable_network $NET_ID2 # 步骤3查看所有配置确认ID和SSID对应关系 wpa_cli -i wlan0 list_networks # 输出 # 0 WiFi1 any [ENABLED] # 1 WiFi2 any [ENABLED] # 步骤4保存配置永久生效 wpa_cli -i wlan0 save_config这种方式完全无需手动指定 ID既避免冲突又能保留多个 WiFi 配置系统会按priority优先级自动连接。四、特殊场景只想保留一个 WiFi复用 0如果你的需求是 “始终只保留一个 WiFi 配置新配置替换旧的”可以这样操作仅推荐单 WiFi 场景# 1. 先删除旧的0号配置若存在 wpa_cli -i wlan0 remove_network 0 2/dev/null # 忽略“无0号”的错误 # 2. 添加新配置自动分配0 NET_ID$(wpa_cli -i wlan0 add_network) wpa_cli -i wlan0 set_network $NET_ID ssid NewWiFi wpa_cli -i wlan0 set_network $NET_ID psk NewPass wpa_cli -i wlan0 enable_network $NET_ID wpa_cli -i wlan0 save_config总结无需手动指定编号add_network会自动分配唯一 ID用变量捕获即可如NET_ID$(wpa_cli add_network)不建议强行用 0复用 0 会覆盖旧配置导致多 WiFi 配置丢失仅适合 “单 WiFi 替换” 场景最佳实践添加多个 WiFi 时让系统自动分配 ID通过list_networks查看 ID按 ID 管理不同 WiFi。网络管理修改 / 删除 / 切换如下# 禁用指定网络ID为0从list_networks获取 wpa_cli -i wlan0 disable_network 0 # 启用指定网络切换WiFi wpa_cli -i wlan0 enable_network 0 # 修改已有网络的密码 wpa_cli -i wlan0 set_network 0 psk \NewPass456\ wpa_cli -i wlan0 enable_network 0 # 重新启用生效 wpa_cli -i wlan0 save_config # 删除指定网络 wpa_cli -i wlan0 remove_network 0 wpa_cli -i wlan0 save_config # 断开当前WiFi连接 wpa_cli -i wlan0 disconnect # 重新连接已配置的网络 wpa_cli -i wlan0 reconnect更多待补充wpa_supplicant配置文件wpa_supplicant 配置文件详解核心/etc/wpa_supplicant.conf配置文件是wpa_supplicant的核心所有 WiFi 配置永久存储于此格式为纯文本键值对 块结构以下是完整示例和关键说明1. 配置文件基础结构/etc/wpa_supplicant.conf# 全局配置通用设置 ctrl_interface/var/run/wpa_supplicant # wpa_cli通信的套接字目录 update_config1 # 允许wpa_cli save_config修改文件 countryCN # 国家码合规使用WiFi频段 ap_scan1 # 主动扫描WiFi # 网络配置块可配置多个对应不同WiFi network{ ssidMyWiFi # WiFi名称必须双引号 psk89abcdef1234567890abcdef12345678 # 加密后的PSK推荐 # 或明文密码测试用不推荐pskMyWiFiPass123 key_mgmtWPA-PSK # 加密方式WPA/WPA2 protoWPA2 # 协议版本WPA/WPA2/WPA3 pairwiseCCMP # 加密算法CCMP/AES groupCCMP # 组加密算法 priority10 # 连接优先级数值越高越优先 } # 开放网络配置示例无密码 network{ ssidPublicWiFi key_mgmtNONE priority5 } # 隐藏SSID的WiFi配置 network{ ssidHiddenWiFi pskHiddenPass123 scan_ssid1 # 强制扫描隐藏SSID priority8 }2. 配置文件关键参数说明参数作用ctrl_interfacewpa_cli 与 wpa_supplicant 通信的目录默认 /var/run/wpa_supplicantupdate_config设为 1 时wpa_cli save_config 会自动修改此配置文件ssidWiFi 名称必须用双引号包裹psk密码可填明文测试或加密 PSK生产由 wpa_passphrase 生成key_mgmt认证方式WPA-PSK普通 WiFi、NONE开放网络、WPA-EAP企业 WiFiproto协议版本WPA旧版、WPA2主流、WPA3新版、WPA WPA2兼容scan_ssid设为 1 时扫描隐藏 SSID 的 WiFi默认 0不扫描priority连接优先级数值越大越优先避免自动连低优先级 WiFi3. 配置文件的生成与修改手动编写直接编辑/etc/wpa_supplicant.conf按上述格式添加 network 块自动生成通过wpa_cli save_config自动写入推荐避免格式错误加密 PSK 生成wpa_passphrase MyWiFi MyPass123输出的内容可直接复制到 network 块中示例wpa_passphrase MyWiFi MyPass123 # 输出 network{ ssidMyWiFi #pskMyPass123 psk89abcdef1234567890abcdef12345678 # 加密后的密码 }三、常见配置文件路径不同系统差异系统 / 场景配置文件路径说明通用 LinuxDebian/Ubuntu/etc/wpa_supplicant.conf默认路径嵌入式 LinuxBuildroot/OpenWrt/etc/wpa_supplicant/wpa_supplicant.conf分目录存放systemd 系统/etc/wpa_supplicant/wpa_supplicant-wlan0.conf按网卡区分配置文件自定义启动任意路径启动时通过 - c 参数指定如-c /tmp/my_wpa.conf总结核心操作wpa_cli负责交互配置 / 连接wpa_passphrase生成加密 PSKwpa_supplicant负责后台运行配置文件核心是/etc/wpa_supplicant.conf包含全局配置 多个 network 块update_config1是允许自动修改的关键最佳实践生产环境用加密 PSK避免明文密码配置priority避免自动连错 WiFi修改后执行save_config永久生效。

相关新闻

ubuntu软件更新遇到KernelPanic

ubuntu软件更新遇到KernelPanic

ubuntu软件更新遇到KernelPanic 我使用的是ubuntu24,最近想玩下ebpf,然后在安装软件,看到系统有升级提示,我就顺手点了升级。 然后启动红屏了。看屏幕报错:Kernel Panic - not syncing: VFS: Unable to mount root fs …

2026/7/3 5:56:34 阅读更多 →
keil烧录时遇到的问题2,你明明插的就是正常的的ST-Link但是显示Not a genuine ST Device! Abort connection非原厂ST设备!中止连接。

keil烧录时遇到的问题2,你明明插的就是正常的的ST-Link但是显示Not a genuine ST Device! Abort connection非原厂ST设备!中止连接。

在我们烧录我们编译成功的程序时我们插上我们购买的正常的ST-Link,之后我们进行烧录却显示Not a genuine ST Device! Abort connection这个时候不要慌先看看我们的ST-Link的线序是否插对或者ST-Link是否在闪烁,检查完毕后再进行烧录,若还是显…

2026/5/17 12:56:06 阅读更多 →
Python 技术栈全链路学习书单推荐:从零基础到 AI 实战的成长指南

Python 技术栈全链路学习书单推荐:从零基础到 AI 实战的成长指南

在 Python 技术生态日益繁荣的今天,无论是零基础入门编程,还是向 Web 开发、数据科学、人工智能等方向进阶,一套体系化的学习资料都能让成长效率事半功倍。今天为大家整理了一份覆盖Python 基础、Web 开发、网络爬虫、数据分析、深度学习五大…

2026/7/3 0:23:07 阅读更多 →

最新新闻

STM32与TI降压转换器的高效电源管理方案

STM32与TI降压转换器的高效电源管理方案

1. 项目背景与硬件选型解析在嵌入式电源管理领域,DC-DC降压转换是基础但至关重要的技术环节。本次项目采用171010550电源管理IC与STM32F215ZG微控制器的组合方案,这个搭配在工业控制领域颇具代表性。171010550是TI(德州仪器)旗下的…

2026/7/3 21:03:28 阅读更多 →
Rust 流式输出:让模型边生成边显示,但别忘了中断

Rust 流式输出:让模型边生成边显示,但别忘了中断

Rust 流式输出:让模型边生成边显示,但别忘了中断 第一次用 AI CLI 工具时,我最喜欢的体验就是"字一个一个往外蹦"的感觉——不用等模型完全生成完,就能看到内容在慢慢出现。但自己动手实现流式输出后才知道,…

2026/7/3 21:03:28 阅读更多 →
STM32F415RG与ICM-45605构建高精度IMU系统指南

STM32F415RG与ICM-45605构建高精度IMU系统指南

1. 项目背景与核心器件选型在嵌入式系统开发中,精确测量物体的运动状态是一个常见但极具挑战性的需求。ICM-45605作为TDK InvenSense最新推出的6轴MEMS IMU传感器,配合STM32F415RG这款高性能ARM Cortex-M4微控制器,能够构建一个高精度、低功耗…

2026/7/3 21:01:28 阅读更多 →
AI智能剪辑新范式:用LLM“阅读”视频,告别传统剪辑苦力

AI智能剪辑新范式:用LLM“阅读”视频,告别传统剪辑苦力

🚀 30款热门AI模型一站整合,DeepSeek/GLM/Claude 随心用,限时 5 折。 👉 点击领海量免费额度 如果你还在用传统剪辑软件,一帧一帧地剪掉“嗯…啊…”的停顿,手动对齐字幕,反复渲染预览&#…

2026/7/3 21:01:28 阅读更多 →
学术写作告别多平台切换!okbiye 毕业论文功能一站式解决毕业生全流程难题

学术写作告别多平台切换!okbiye 毕业论文功能一站式解决毕业生全流程难题

okbiye-免费查重复率aigc检测/开题报告/毕业论文/智能排版/文献综述/科研绘图毕业论文 - Okbiye智能写作https://www.okbiye.com/ai/bylw 一、侧边栏分区一目了然,okbiye 精准拆分各类学术写作需求 打开 okbiye 操作界面,左侧是固定功能导航栏&#xff…

2026/7/3 21:01:28 阅读更多 →
告别手动替换:BetterNCM 安装器的自动化革命

告别手动替换:BetterNCM 安装器的自动化革命

告别手动替换:BetterNCM 安装器的自动化革命 【免费下载链接】BetterNCM-Installer 一键安装 Better 系软件 项目地址: https://gitcode.com/gh_mirrors/be/BetterNCM-Installer 在网易云音乐用户群体中,BetterNCM 早已成为提升体验的必备神器。然…

2026/7/3 21:01:28 阅读更多 →

日新闻

Nginx防御TLS重协商攻击实战:从原理到配置与监控

Nginx防御TLS重协商攻击实战:从原理到配置与监控

1. 项目概述:为什么TLS重协商攻击至今仍需警惕十多年前的CVE-2011-1473,一个关于TLS/SSL协议重协商机制的漏洞,现在提起来还有必要吗?很多运维和开发朋友可能会觉得,这都老掉牙了,现代服务器和客户端不都默…

2026/7/3 0:03:59 阅读更多 →
华为防火墙双通道远程管理实战:Web与SSH配置详解

华为防火墙双通道远程管理实战:Web与SSH配置详解

1. 项目概述:为什么需要双通道远程管理防火墙?在任何一个稍具规模的企业网络里,防火墙都是那个默默守护在边界的关键角色。作为网络工程师,我们不可能每次都跑到机房,插上console线去配置它。远程管理能力,…

2026/7/3 0:03:59 阅读更多 →
AD74413R与PIC18F65K40的高精度工业数据采集方案

AD74413R与PIC18F65K40的高精度工业数据采集方案

1. 项目概述:AD74413R与PIC18F65K40的协同工作在工业自动化和精密测量领域,同时实现高精度模数转换(ADC)和数模转换(DAC)功能是许多复杂系统的核心需求。AD74413R作为一款四通道可配置模拟输入/输出器件,与PIC18F65K40微控制器的组合&#xf…

2026/7/3 0:05:59 阅读更多 →

周新闻

月新闻