hostapd 不仅是一个守护进程,还提供了一个交互式的命令行客户端,允许你与正在运行的 hostapd 实例进行实时通信,这对于调试、查看状态、动态更改配置以及管理连接的客户端非常有用。

如何启动 CLI 客户端?
CLI 客户端通常与 hostapd 守护进程一起安装,启动它的命令非常简单:
sudo hostapd_cli
重要提示:
- 你必须使用
sudo来运行hostapd_cli,因为它需要与hostapd守护进程进行通信,而该守护进程通常以 root 权限运行。 - 默认情况下,
hostapd会在/var/run/hostapd/目录下创建一个 Unix domain socket(套接字)来等待客户端连接,如果你的hostapd配置中指定了不同的接口或路径,你可能需要使用-i参数来指定接口名称。
# hostapd 运行在 wlan0 接口上 sudo hostapd_cli -i wlan0 # hostapd 使用了自定义的控制接口路径 sudo hostapd_cli -p /path/to/custom/control_socket
启动后,你会看到一个 > 提示符,表示现在可以输入命令了。
常用 hostapd_cli 命令
以下是 CLI 中最常用和最有用的命令,并附有解释和示例。

A. 状态和查看类命令
这些命令用于获取 hostapd 的运行状态信息。
| 命令 | 描述 | 示例/输出 |
|---|---|---|
status |
最常用,显示 hostapd 守护进程的详细状态,包括接口状态、SSID、BSSID、是否已启动等。 |
> status <br> wlan0: <br> state: AP-ENABLED <br> ssid: MyWiFi <br> ... |
ping |
测试与 hostapd 守护进程的连接是否正常,如果连接正常,它会返回 PONG。 |
> ping <br> PONG |
get |
获取一个特定配置参数的当前值,参数名需要与配置文件中的完全一致。 | > get ssid <br> MyWiFi |
mib |
显示 MIB(管理信息库)变量,这提供了非常底层的详细信息,如计数器、统计等。 | > mib <br> ... |
sta_list |
列出所有已关联的客户端(STA)的 MAC 地址。 | > sta_list <br> 00:11:22:33:44:55 <br> aa:bb:cc:dd:ee:ff |
all_sta |
显示所有已关联客户端的详细信息,包括每个客户端的信号强度、速率等。 | > all_sta <br> 00:11:22:33:44:55: <br> aid: 1 <br> ... |
B. 管理和控制类命令
这些命令用于控制 hostapd 的行为。
| 命令 | 描述 | 示例/输出 |
|---|---|---|
reload |
非常实用,在不重启 hostapd 的情况下,重新加载配置文件,这允许你动态修改配置(如更改密码、信道等)并使其生效。 |
> reload <br> OK |
relog |
重新打开日志文件,这对于在 hostapd 运行时轮转日志文件很有用。 |
> relog <br> OK |
update_beacon |
更新 Beacon 帧中的元素(如 SSID),通常在 reload 后自动完成,但有时可以手动触发。 |
> update_beacon <br> OK |
disable |
禁用指定的 Wi-Fi 接口,接口将停止响应所有请求。 | > disable <br> OK |
enable |
重新启用之前被禁用的 Wi-Fi 接口。 | > enable <br> OK |
terminate |
危险,强制 hostapd 守护进程退出,这会导致所有客户端断开连接。 |
> terminate <br> OK |
C. 客户端管理命令
这些命令用于管理已连接的客户端。
| 命令 | 描述 | 示例/输出 |
|---|---|---|
deauthenticate <MAC> |
非常实用,断开指定 MAC 地址的客户端的连接,并强制其重新关联,可以指定原因码。 | > deauthenticate 00:11:22:33:44:55 <br> OK |
auth <MAC> |
手动为指定 MAC 地址的客户端执行认证过程。 | > auth 00:11:22:33:44:55 <br> OK |
assoc <MAC> |
手动为指定 MAC 地址的客户端执行关联过程,通常在认证成功后使用。 | > assoc 00:11:22:33:44:55 <br> OK |
sa_query <MAC> |
发送 SA 查询请求给客户端,用于检测和清除旧的快速切换密钥。 | > sa_query 00:11:22:33:44:55 <br> OK |
实用场景示例
排查客户端无法连接的问题
-
首先检查
hostapd状态:> status
输出应该显示
state: AP-ENABLED,如果是AP-DISABLED,说明 AP 没有启动。 -
查看是否有客户端连接:
> sta_list
如果列表为空,说明没有任何设备连接上你的热点。
-
检查日志: 你需要在另一个终端查看
hostapd的日志文件(/var/log/syslog或你指定的日志文件),寻找错误信息,如“authentication failure”或“association failure”。 -
尝试手动认证一个测试设备: 假设你有一个手机的 MAC 地址是
aa:bb:cc:dd:ee:ff,你可以尝试手动认证它:> auth aa:bb:cc:dd:ee:ff
然后观察日志,看认证过程是否成功。
动态更改 Wi-Fi 密码
这是 hostapd_cli 的一个强大功能,无需重启服务。
-
修改你的
hostapd配置文件(/etc/hostapd/hostapd.conf),将wpa_passphrase更改为新密码。wpa_passphrase=NewSuperSecretPassword123
-
在 CLI 中执行
reload命令:> reload
hostapd会重新读取配置文件并应用新的设置。 -
验证新密码是否生效: 你可以再次使用
get命令检查:> get wpa_passphrase
注意:出于安全原因,它可能不会返回明文密码,但配置已经更新,新连接的设备将使用新密码,而已连接的设备可能会在下次握手后使用新密钥。
踢掉某个特定设备
如果某个设备连接异常或你不希望它连接,可以将其断开。
-
获取设备列表:
> sta_list
假设你想踢掉设备的 MAC 是
cc:dd:ee:ff:00:11。 -
执行断开命令:
> deauthenticate cc:dd:ee:ff:00:11
该设备将会立即断开连接,并尝试重新连接。
退出 CLI
要退出 hostapd_cli,只需输入 quit 或 exit:
> quit
hostapd_cli 是一个功能强大的调试和管理工具,对于任何使用 hostapd 构建自定义 Wi-Fi 接入点的用户或系统管理员来说,熟练掌握以下命令是必不可少的:
status: 快速检查整体状态。sta_list/all_sta: 查看客户端信息。reload: 动态更新配置。deauthenticate: 踢掉特定客户端。ping: 验证连接。
通过 CLI,你可以实时监控和管理你的 Wi-Fi 网络,而无需停止和重启服务,极大地提高了运维效率。
