问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

使用wpa_supplicant和wpa_cli 扫描WiFi热点及配网

创作时间:
作者:
@小白创作中心

使用wpa_supplicant和wpa_cli 扫描WiFi热点及配网

引用
CSDN
1.
https://m.blog.csdn.net/weixin_44474051/article/details/145511682

本文将详细介绍如何使用wpa_supplicant和wpa_cli工具扫描WiFi热点及配网。通过加载无线网卡驱动、扫描WiFi热点、连接WiFi热点等步骤,帮助读者掌握在Linux系统中进行WiFi配置的具体方法。

一:简要说明

交叉编译wpa_supplicant工具后会有wpa_supplicant和wpa_cli两个程序生产,如果知道需要连接的WiFi热点及密码的话不需要遍历及查询所有WiFi热点的名字及信号强度等信息的话,使用wpa_supplicant即可,否则还需要使用wpa_cli来查询遍历WiFi热点及配网。

wpa_cli不能单独使用,需要先启动wpa_supplicant后在运行wpa_cli,因为wpa_supplicant作为服务端,wpa_cli作为客户端需要访问wpa_supplicant

二:加载无线网卡驱动

WiFi的扫描及配网本质是网卡驱动实现的,所以必须先加载网卡驱动

insmod cfg80211.ko
insmod rtl8733bu.ko
mkdir /tmp/wpa_supplicants

这是一个wpa_supplicants的运行路径,wpa_supplicants的配置文件会指定ctrl_interface 到这里,默认是/var/run/wpa_supplicants

三:扫描遍历WiFi热点及配网

  1. 启动wpa_supplicant服务
./wpa_supplicant -i wlan0 -c wpa_supplicant.conf -B

wpa_supplicant.conf配置如下:

ctrl_interface=/tmp/wpa_supplicants
update_config=1
  1. 扫描WiFi热点
./wpa_cli -i wlan0 -p /tmp/wpa_supplicants scan

注意1:如果没有加-p指定 wpa_supplicants路径,则会提示下面错误,因为默认路径为/var/run/wpa_supplicant,或者将配置中的/tmp/wpa_supplicants改成/var/run/wpa_supplicants则无此问题不用-p参数

Failed to connect to non-global ctrl_ifname: wlan0 error: No such file or directory

注意2:scan扫描过程需要一定的时间,扫描过程中将使wpa_supplicant处于busy状态,再次发送scan扫描将失败

  1. 查看扫描结果
./wpa_cli -i wlan0 -p /tmp/wpa_supplicants scan_results

注意:scan_results打印出来的是可获得的WiFi的列表,列表包含WiFi热点的ssid(名称)、bssid(mac地址)、signal level(信号强度,单位dBm)、flags(加密类型)等。

  1. 连接WiFi热点

4.1 增加一个网络id,后面根据这个网络编号来配置WiFi热点,我这里得到的编号为0

./wpa_cli -i wlan0 -p /tmp/wpa_supplicants add_network

4.2 配置WiFi热点的名字ssid

./wpa_cli -i wlan0 -p /tmp/wpa_supplicants set_network 网络编号 ssid '"WiFi名字"'
eg: ./wpa_cli -i wlan0 -p /tmp/wpa_supplicants set_network 0 ssid '"hfzuo"'

4.3 配置WiFi热点的密码psd

./wpa_cli -i wlan0 -p /tmp/wpa_supplicants set_network 网络编号 psk '"密码"'
eg:./wpa_cli -i wlan0 -p /tmp/wpa_supplicants set_network 0 psk '"88888888"'

4.4 查看网络列表

./wpa_cli -i wlan0 -p /tmp/wpa_supplicants list_network

4.5 选择网络

./wpa_cli -i wlan0 -p /tmp/wpa_supplicants select_network 网络编号
eg: ./wpa_cli -i wlan0 -p /tmp/wpa_supplicants select_network 0

4.6 请求动态分配IP

udhcpc -i wlan0 &

4.7 查看WiFi状态

./wpa_cli -i wlan0 -p /tmp/wpa_supplicants status

4.8 保存WiFi热点信息

./wpa_cli -i wlan0 -p /tmp/wpa_supplicants save_config

保存的WiFi热点信息到配置文件/etc/wpa_supplicant.conf里了

下次直接运行

./wpa_supplicant -i wlan0 -c /etc/wpa_supplicant.conf -B

即可自动连上hfzuo的热点

wpa_supplicant.conf内容如下:

ctrl_interface=/tmp/wpa_supplicants
update_config=1
network={
ssid="hfzuo"
psk="88888888"
proto=WPA2
key_mgmt=WPA-PSK
pairwise=CCMP
group=CCMP
}

四:其他未测试验证的命令

  1. 停止使用WiFi热点(此时还连载WiFi热点,只是没有激活使用)
wpa_cli -i wlan0 disable_network 网络编号
  1. 使能WiFi热点
wpa_cli -i wlan0 enable_network 网络编号
  1. 断开WiFi热点
wpa_cli -i wlan0 disconnect
  1. 重连WiFi热点
wpa_cli -i wlan0 reconnect
  1. 删除WiFi热点
wpa_cli -i wlan0 remove_network 网络编号
© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号