切换WIFI连接

如果有多个无线AP,有时候需要切换连接到不同AP上进行工作(例如临时切换到手机共享的热点上)。假设我们已经在 /etc/wpa_supplicant/wpa_supplicant.conf 中配置好了不同AP的连接配置(账号密码),那么怎么按需切换到不同WIFI连接呢?

  • 首先 使用wpa_supplicant连接无线网络 ,确保 /etc/wpa_supplicant/wpa_supplicant.conf 包含了需要连接的不同WIFI的配置(密码)

  • wpa_cli 提供了切换网络的功能:

    wpa_cli -i wlan0 list_networks
    

显示:

network id / ssid / bssid / flags
0       alibaba-inc     any
1       Air     any     [DISABLED]
2       CMCC-Xidu-5G    any     [CURRENT]
3       pixel_1598      any     [DISABLED]

使用AP对应的数字来进行切换(第一列),例如要切换到 pixel_1598 则执行:

wpa_cli -i wlan0 select_network 3

备注

切换到 pixel_1598 ,但是反过来切换到 CMCC-Xidu-5G (5G WIFI)存在问题,未解决(虽然 wpa_supplicant.conf 已经配置了 country=CN )

  • 此外 wpa_cli 提供了交互方式切换网络,通过调整不同wifi连接的优先级 priority 来交互切换,举例如下:

通过调整wifi连接的优先级切换网络
# wpa_cli
wpa_cli v2.10
Copyright (c) 2004-2022, Jouni Malinen <j@w1.fi> and contributors

This software may be distributed under the terms of the BSD license.
See README for more details.


Selected interface 'wlan0'

Interactive mode

> list_networks
network id / ssid / bssid / flags
0       alibaba-inc     any
1       Air     any
2       CMCC-Xidu-5G    any     [CURRENT]
3       pixel_1598      any
> get_network 2 priority
0
> get_network 3 priority
0
> set_network 3 priority 2
OK
> reassociate
OK
<3>CTRL-EVENT-SCAN-STARTED
<3>CTRL-EVENT-SCAN-RESULTS
<3>CTRL-EVENT-DISCONNECTED bssid=54:16:51:11:25:e6 reason=3 locally_generated=1
<3>CTRL-EVENT-DSCP-POLICY clear_all
<3>Trying to associate with SSID 'pixel_1598'
<3>CTRL-EVENT-REGDOM-CHANGE init=CORE type=WORLD
<3>Associated with e2:c9:d3:f2:d4:e5
<3>CTRL-EVENT-CONNECTED - Connection to e2:c9:d3:f2:d4:e5 completed [id=3 id_str=]
<3>CTRL-EVENT-SUBNET-STATUS-UPDATE status=0
> list_networks
network id / ssid / bssid / flags
0       alibaba-inc     any
1       Air     any
2       CMCC-Xidu-5G    any
3       pixel_1598      any     [CURRENT]

参考