使用wpa_supplicant和wpa_cli 扫描WiFi热点及配网
使用wpa_supplicant和wpa_cli 扫描WiFi热点及配网
本文将详细介绍如何使用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热点及配网
- 启动wpa_supplicant服务
./wpa_supplicant -i wlan0 -c wpa_supplicant.conf -B
wpa_supplicant.conf
配置如下:
ctrl_interface=/tmp/wpa_supplicants
update_config=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扫描将失败
- 查看扫描结果
./wpa_cli -i wlan0 -p /tmp/wpa_supplicants scan_results
注意:scan_results打印出来的是可获得的WiFi的列表,列表包含WiFi热点的ssid(名称)、bssid(mac地址)、signal level(信号强度,单位dBm)、flags(加密类型)等。
- 连接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
}
四:其他未测试验证的命令
- 停止使用WiFi热点(此时还连载WiFi热点,只是没有激活使用)
wpa_cli -i wlan0 disable_network 网络编号
- 使能WiFi热点
wpa_cli -i wlan0 enable_network 网络编号
- 断开WiFi热点
wpa_cli -i wlan0 disconnect
- 重连WiFi热点
wpa_cli -i wlan0 reconnect
- 删除WiFi热点
wpa_cli -i wlan0 remove_network 网络编号