WPA_CLI 的介绍:介绍如何使用wpa_cli连接WiFi的方法

简介: WPA_CLI 的介绍:介绍如何使用wpa_cli连接WiFi的方法


  • 简介

wpa_cli 是一个基于文本的前端程序,用于与 wpa_supplicant 交互。

它用于查询当前状态、更改配置、触发事件和请求交互式用户输入。

wpa_cli 可以显示当前的认证状态、选择的安全模式、dot11 和 dot1x MIB 等。

此外,它可以配置一些变量,如 EAPOL 状态机参数和触发事件,如重新关联和 IEEE 802.1X 注销/登录。

wpa_cli 提供了一个用户界面来请求身份验证信息,例如用户名和密码,如果这些未包含在配置中。这可用于实现例如一次性密码或通用令牌卡身份验证,其中身份验证基于使用外部设备生成响应的质询-响应。

wpa_supplicant的控制接口可以配置为允许非root用户访问(ctrl_interface GROUP=配置文件中的参数)。这使得使用普通用户帐户运行 wpa_cli 成为可能。

wpa_cli 支持两种模式:交互模式和命令行模式。两种模式共享相同的命令集,主要区别在于交互模式提供对未经请求的消息(事件消息、用户名/密码请求)的访问。

交互模式在执行 wpa_cli 时启动,而不包括命令作为命令行参数。然后在 wpa_cli 提示符下输入命令。在命令行模式下,输入相同的命令作为 wpa_cli 的命令行参数。

  • 语法格式
wpa_cli [ -p path to ctrl sockets ] [ -i ifname ] [ -hvB ] [ -a action file ] [ -P pid file ] [ command ... ]
  • 可选参数
-p path
#Change the path where control sockets should be found.
-i ifname
#Specify the interface that is being configured. By default, choose the first interface found with a control socket in the socket path.
-h
#Help. Show a usage message.
-v
#Show version information.
-B
#Run as a daemon in the background.
-a file
#Run in daemon mode executing the action file based on events from wpa_supplicant. The specified file will be executed with the first argument set to interface name and second to "CONNECTED" or "DISCONNECTED" depending on the event. This can be used to execute networking tools required to configure the interface.
#Additionally, three environmental variables are available to the file: WPA_CTRL_DIR, WPA_ID, and WPA_ID_STR. WPA_CTRL_DIR contains the absolute path to the ctrl_interface socket. WPA_ID contains the unique network_id identifier assigned to the active network, and WPA_ID_STR contains the content of the id_str option.
 
-P file
#Set the location of the PID file.
  • 交互式身份验证参数请求

当 wpa_supplicant 需要配置文件中不存在的身份验证参数(如用户名和密码)时,它会向所有附加的前端程序发送请求消息,例如交互模式下的 wpa_cli。

wpa_cli 使用以下命令显示这些请求。

CTRL-REQ-<type>-<id>:<text>

<type> 是 IDENTITY、PASSWORD 或 OTP(一次性密码)

<id> 是当前网络的唯一标识符。 <text> 是请求的描述。在 OTP 请求的情况下,它包括来自身份验证服务器的质询。 可以使用身份、密码和 otp 命令来回复这些请求。

<id> 需要从匹配请求中复制。无论请求是针对 PASSWORD 还是 OTP,都可以使用 password 和 otp 命令。

这两个命令之间的主要区别在于,只要 wpa_supplicant 正在运行,就会记住使用密码给出的值,而使用 otp 给出的值只使用一次然后被遗忘,即 wpa_supplicant 每次使用都会向前端询问一个新值。

这可用于实现一次性密码列表和基于通用令牌卡的身份验证

示例

#Example request for password and a matching reply:
 
CTRL-REQ-PASSWORD-1:Password needed for SSID foobar
> password 1 mysecretpassword
#Example request for generic token card challenge-response:
 
CTRL-REQ-OTP-2:Challenge 1235663 needed for SSID foobar
> otp 2 9876
  • 综合应用示例
#启动脚本
wpa_supplicant -iwlan0 -Dnl80211 -c/etc/ambaipcam/IPC_Q313/config/wlan/wpa_supplicant.conf -B
#查询网卡状态
wpa_cli -p/var/run/wpa_supplicant -iwlan0 status
#搜索附近网络功能  no/ok
wpa_cli -i wlan0 scan
#搜索附近网络,并列出结果
wpa_cli -i wlan0 scan_result
#查看当前连接的是哪个网络
wpa_cli -i wlan0 list_network    
#获取一个存储wifi结构的id,假设为1
wpa_cli -i wlan0 add_network
#设置ID为1的热点SSID
wpa_cli -i wlan0 set_network 1 ssid '"HO4428"'  
#设置ID为1的热点的密码
wpa_cli -i wlan0 set_network 1 psk '"442701102"'
#设置加密方式,可以不加
wpa_cli -i wlan0 set_network 1 key_mgmt WPA2-PSK-CCMP
#设置当前网络优先级,默认为2,可以不加
wpa_cli -i wlan0 set_network 1 priority 2   
#设置ssid默认为1即可  ,可以不加
wpa_cli -i wlan0 set_network 1 scan_ssid 1    
#启动连接ID为1的网络
wpa_cli -i wlan0 enable_network 1
#选择网络0(这样做的好处在于,可以取消先前的其它网络连接)
wpa_cli -i wlan0 select_network 1
#保存刚刚填写的wifi帐号,写入配置文件
wpa_cli -i wlan0 save_config
#请求自动分配IP地址,-b:后台(back) –i:指定接口 –q:获得续约后退出,如果想尽在前台运行,则去掉-b,加上-f
#不用不加,会自动分配
udhcpc -b -i wlan0 -q 


目录
相关文章
|
2月前
|
传感器 数据采集 移动开发
基于STM32的智能手环wifi连接手机APP(下)
基于STM32的智能手环wifi连接手机APP(下)
86 0
|
2月前
|
传感器 存储 编解码
基于STM32的智能手环wifi连接手机APP(上)
基于STM32的智能手环wifi连接手机APP(上)
65 0
|
4月前
|
Ubuntu 网络安全 数据安全/隐私保护
ubuntu server连接wifi教程
本文提供了一个简化Ubuntu Server在Raspberry Pi系统上配置过程的脚本"config_ubuntu_server",包括自动和手动两种方法来设置root权限、SSH配置,并连接WiFi,同时支持无密码SSH访问,适合初学者和高级用户。
96 3
|
7月前
|
Android开发
Android获取当前连接的wifi名称
Android获取当前连接的wifi名称
343 6
|
6月前
|
网络协议
了解AT指令以及STM32F103如何通过ESP8266连接到WiFi
AT指令是一组用于控制调制解调器的命令,最早由Hayes公司为其智能调制解调器开发。如今,AT指令已被广泛应用于各种通信模块中,包括GSM、Bluetooth和WiFi模块。AT指令通常以“AT”开头,后跟特定的命令和参数。通过这些指令,我们可以执行一系列操作,如设置网络参数、发送数据和查询状态等。
259 0
|
6月前
|
数据安全/隐私保护 Windows
windows系统bat批处理 查看当前电脑连接过的wifi名字和wifi密码
windows系统bat批处理 查看当前电脑连接过的wifi名字和wifi密码
339 0
|
7月前
|
Android开发
android连接指定wifi
android连接指定wifi
112 0
|
7月前
|
Android开发 Python
Python封装ADB获取Android设备wifi地址的方法
Python封装ADB获取Android设备wifi地址的方法
156 0
|
7月前
|
XML API Android开发
Android WIFI使用简述(上)
Android WIFI使用简述(上)
295 0
|
7月前
|
Android开发
Android 状态栏WiFi图标的显示逻辑
Android 状态栏WiFi图标的显示逻辑
180 0