wpa_supplicant、wpa_cli的使用

拥有回忆 提交于 2019-12-01 15:33:11

wpa_supplicant工具包含wpa_supplicant和wpa_cli这2个程序,其中wpa_supplicant程序作为服务端在后台运行,服务wpa_cli客户端的请求,从而实现WiFi的配置连接。wpa_supplicant工具支持wep、wpa、wpa2等加密认证方式。本文接下来介绍如何使用wpa_supplicant、wpa_cli这2个程序进行WiFi的配置。

一、wpa_supplicant的使用

运行wpa_supplicant,wpa_supplicant程序作为wpa_cli的服务端,必须先启动后,才能给wpa_cli访问使用。

wpa_supplicant的手册说明:

wpa_supplicant

usage:

wpa_supplicant [-BddhKLqqtvW] [-P<pid file>] [-g<global ctrl>] \

[-G<group>] \

-i<ifname> -c<config file> [-C<ctrl>] [-D<driver>] [-p<driver_param>] \

[-b<br_ifname>] [-e<entropy file>] \

[-o<override driver>] [-O<override ctrl>] \

[-N -i<ifname> -c<conf> [-C<ctrl>] [-D<driver>] \

[-p<driver_param>] [-b<br_ifname>] [-I<config file>] ...]

drivers:

nl80211 = Linux nl80211/cfg80211

wext = Linux wireless extensions (generic)

wired = Wired Ethernet driver

options:

-b = optional bridge interface name

-B = run daemon in the background

-c = Configuration file

-C = ctrl_interface parameter (only used if -c is not)

-d = increase debugging verbosity (-dd even more)

-D = driver name (can be multiple drivers: nl80211,wext)

-e = entropy file

-g = global ctrl_interface

-G = global ctrl_interface group

-h = show this help text

-i = interface name

-I = additional configuration file

-K = include keys (passwords, etc.) in debug output

-L = show license (BSD)

-N = start describing new interface

-o = override driver parameter for new interfaces

-O = override ctrl_interface parameter for new interfaces

-p = driver parameters

-P = PID file

-q = decrease debugging verbosity (-qq even less)

-t = include timestamp in debug messages

-v = show version

-W = wait for a control interface monitor before starting

例:

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

-D nl80211:表示驱动类型名称为nl80211

-i wlan0:表示网络接口名称为wlan0

-c /etc/wpa_supplicant.conf:表示配置文件为wpa_supplicant.conf

-B:表示将守护进程wpa_supplicant 挂到后台运行

 

二、wpa_cli的使用

1、wpa_cli的使用方式

wpa_supplicant作为服务端已经运行,此时再启动wpa_cli客户端,即可通过wpa_cli客户端进行网络配置的操作。

使用wpa_cli有2种方式,一种是通过进入wpa_cli控制台交互界面进行。

例:

在串口终端输入:

wpa_cli

另一种是不进入控制台交互界面,直接通过串口终端输入完整的命令。本文的WiFi配置将通过这种方式进行介绍。

例:再串口终端输入命令:

wpa_cli -i wlan0 help

注意:

-i wlan0:表示网络接口名称是wlan0。我的板子WiFi的网络接口名称是wlan0,下文将一直使用这网络接口操作。

下面我们将从使用WiFi的常用流程来介绍wpa_cli的使用。所有的命令使用介绍可以通过“wpa_cli -i wlan0 help”命令进行查看。

 

2、扫描周边WiFi热点

启动扫描:

wpa_cli -i wlan0 scan

注意:

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

 

查看扫描结果:

wpa_cli -i wlan0 scan_results

注意:

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

可以发现,如果周边有多个热点,打印出来的WiFi列表,一个热点是一行信息,但热点排列的先后顺序不是严格按信号强度signal level(负值)由大到小排列。而且此时再开新的WiFi热点,重新scan,然后scan_results打印结果,会发现新开的WiFi热点,虽然信号强,但也是排在列表很靠后的位置。

所以如果想让WiFi热点按照信号强度由大到小排序,就要在获取到WiFi列表后,自己再根据信号强度进行降序排列,从而实现信号强的WiFi排在前面。

 

3、连接WiFi热点

增加一个网络id:

add_network命令会返回一个network id,后面是根据这网络编号来配置WiFi热点。

wpa_cli -i wlan0 add_network

 

配置WiFi热点的名称ssid:

wpa_cli -i wlan0 set_network 网络编号 ssid '"WiFi名称"'

例:

wpa_cli -i wlan0 set_network 0 ssid '"honor"'

 

配置WiFi热点的密码psk:

wpa_cli -i wlan0 set_network 网络编号 psk '"密码"'

例:

wpa_cli -i wlan0 set_network 0 psk '"12345678"'

 

查看网络列表:

wpa_cli -i wlan0 list_network

 

选择网络:

使用list_network命令,会打印所有已添加成功的WiFi热点,如果有多个WiFi热点,可以使用select_network命令选择使用哪个热点,可实现WiFi热点的切换。

wpa_cli -i wlan0 select_network 网络编号

例:

wpa_cli -i wlan0 select_network 0

注意:

此时只是连接AP成功,并未获取到IP、DNS。可使用udhcpc命令动态获取IP。

例:

udhcpc -i wlan0 -q

 

下面示例如何连接WiFi进行上网。

配置热点信息:

选择热点:

查看是否分配IP:

使用udhcpc获取IP:

访问外网测试:

 

4、查看WiFi状态信息

wpa_cli -i wlan0 status

使用status命令,查看当前wifi的信息,包括bssid,ssid,IP等等。

注意:通过status命令查看到WiFi是连接状态,并不能确定就能访问外网,还要查看是否已经获取了IP、DNS等。

 

5、保存WiFi热点信息

wpa_cli -i wlan0 save_config

保存WiFi热点信息到配置文件/etc/wpa_supplicant.conf文件中。

 

6、停止使用WiFi热点

wpa_cli -i wlan0 disable_network 网络编号

此时还连接着WiFi热点,只是没有激活使用WiFi。

例:

wpa_cli -i wlan0 disable_network 0

 

7、使能WiFi热点

wpa_cli -i wlan0 enable_network 网络编号

根据网络编号使能对应的WiFi热点,

例:

wpa_cli -i wlan0 enable_network 0

 

8、断开WiFi热点

wpa_cli -i wlan0 disconnect

断开连接WiFi热点,

 

9、重连WiFi热点

disconnect断开WiFi后,可以使用reconnect重连原来断开的网络。

wpa_cli -i wlan0 reconnect

 

10、删除WiFi热点

删除热点后,热点将从list_network中移除,即不能删除前的网络编号配置WiFi热点。

wpa_cli -i wlan0 remove_network 网络编号

例:

wpa_cli -i wlan0 remove_network 0

 

 

 

 

 

 

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!