下冰雹 · 2021年12月28日

全志R系列wpa_supplicant和wpa_cli简介?

求全志R系列wpa_supplicant和wpa_cli简介

1 个回答 得票排序 · 时间排序
极术小姐姐 · 2021年12月29日
本回答来源全志R系列wpa_supplicant和wpa_cli简介

wpa_supplicant是一个连接、配置WiFi的工具,它主要包含wpa_supplicant与wpa_cli两个程序。 可以通过wpa_cli来进行WiFi的配置与连接,前提要保证wpa_supplicant正常启动。
相当于wpa_supplicant 是服务端,wpa_cli 是客户端。

1.wpa_supplicant

启动wpa_supplicant应用
wpa_supplicant -i wlan0 -Dnl80211 -c/etc/wifi/wpa_supplicant.conf -O /etc/wifi/sockets -B
wpa_supplicant -Dnl80211 -iwlan0 -c/etc/wifi/wpa_supplicant.conf -B
wpa_supplicant -B -iwlan0 -c/etc/wifi/wpa_supplicant.conf -Dwext
-D 驱动程序名称(可以是多个驱动程序:nl80211,wext)
-i 接口名称
-c 配置文件
-B 在后台运行守护进程

配置文件 /etc/wpa_supplicant.conf文件里,添加下面代码:
ctrl_interface=/var/run/wpa_supplicant //
update_config=1 // 强制更新覆盖配置 
ctrl_interface指向的是一个目录,在这个目录中默认会生成一个文件/var/run/wpa_supplicant/wlan0,这是local socket address,相当于UNIX Domain Socket,程序和后台程序wpa_supplicant进行通信(其实是wpa_supplicant作为后台服务程序是通过本地socket和客户端进行通信的)
update_config = 1时会在(客户端发送SAVE_CONFIG命令)更新这个配置文件。

Tina上wpa_supplicant的启动是放在/etc/init.d/wpa_supplicant自启动脚本中的。

2.wpa_cli

wpa_cli 是客户端,用来进行WiFi的配置与连接。

启动wpa_cli应用

wpa_cli 有命令和交互的方式进行操作
wpa_cli -i wlan0 scan   //搜索附件wifi热点
wpa_cli -i wlan0 scan_result   //显示搜索wifi热点
wpa_cli -i wlan0 status //当前WPA/EAPOL/EAP通讯状态
wpa_cli -i wlan0 ping //pings wpa_supplicant

添加新的连接

wpa_cli -i wlan0 add_network //添加一个网络连接,会返回
wpa_cli set_network ssid ‘“name”’ //ssid名称
wpa_cli set_network psk ‘“psk”’  //密码
wpa_cli set_network scan_ssid 1
wpa_cli set_network priority 1 //优先级

保存连接

wpa_cli -i wlan0 save_config //信息保存到默认的配置文件中,前面提到的/etc/wpa_supplicant.conf

断开连接

wpa_cli -i wlan0 disable_network

连接已有连接

wpa_cli -i wlan0 list_network //列举保存过得连接
wpa_cli -i wlan0 select_network //连接指定的ssid
wpa_cli -i wlan0 enable_network //使能制定的ssid

网络连接成功的配置文件示例

ctrl_interface=/var/run/wpa_supplicant/
ap_scan=1
network={
scan_ssid=1
ssid="xxxx"
psk="xxxx"
bssid=
priority=2
}

例如:

wpa_cli -i wlan0 scan;
wpa_cli -i wlan0 scan_result;
wpa_cli -i wlan0 add_network;
wpa_cli -i wlan0 set_network 0  ssid '"AW-PDC-PD2-fly2.4g"';
wpa_cli -i wlan0 set_network 0  key_mgmt WPA-PSK;
wpa_cli -i wlan0 set_network 0  psk '"xxxxxxxx"';
wpa_cli -i wlan0 save_config;
wpa_cli -i wlan0 select_network 0;
wpa_cli -i wlan0 enable_network 0;
wpa_cli -i wlan0 list_network;
wpa_cli -i wlan0 status;
你的回答
关注数
1
收藏数
0
浏览数
1990
极术小姐姐
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息