参考文章:
配置及连接
编辑 /etc/wpa_supplicant/wpa_supplicant.conf
# 允许 wheel 组的用户控制 wpa_supplicant
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=wheel
# 允许 wpa_gui / wpa_cli 可写该文件
update_config=1
添加无线网络,名称不能包含中文字符或其它特殊字符,只能是 ascii
字符:
# wpa_passphrase 网络名称 密码 >> /etc/wpa_supplicant/wpa_supplicant.conf
上面命令会在 wpa_supplicant.conf
中添加如下内容:
network={
ssid="wifi1"
psk=6ad077ee70b4541967ee9c0bf0dc902
}
如果你添加了多个网络,可以使用 priority
变量设置连接优先级,数字越大,优先级越高:
network={
ssid="wifi1"
psk=6ad077ee70b4541967ee9c0bf0dc90
priority=10
}
其它可用的变量见 wpa_supplicant.conf(5) 中的
NETWORK BLOCKS
一节。
最后,连接网络 + 获取IP:
# wpa_supplicant -B -i wlp4s0 -c /etc/wpa_supplicant/wpa_supplicant.conf
# dhclient -i wlp4s0 -v
开机启动 - OpenRC
编辑 /etc/conf.d/net
, 替换 wlp4s0
为你的无线网卡名称:
modules_wlp4s0="wpa_supplicant"
config_wlp4s0="dhcp"
添加开机启动:
# cd /etc/init.d
# ln -s net.lo net.wlp4s0
# rc-update add net.wlp4s0 default
dhcpd
不用添加,由 wpa_supplicant
启动
wpa_cli 交互式命令行工具
直接在终端执行 wpa_cli
命令,即可进入交互模式:
$ wpa_cli -i wlp4s0
Interactive mode
> help # 列出所有指令,及其用法
略...
> list_networks # 打印已添加的网络
network id / ssid / bssid / flags
0 wifi1 any
1 wifi2 any [CURRENT]
> scan # 扫描网络
OK
<3>CTRL-EVENT-SCAN-STARTED
<3>CTRL-EVENT-SCAN-RESULTS
> scan_results # 查看扫描结果
1c:16:a1:12:1d:a8 5765 -27 [WPA-PSK-CCMP][WPA2-PSK-CCMP][ESS] wifi1
10:1b:13:d4:14:6c 5200 -62 [WPA-PSK-CCMP][WPA2-PSK-CCMP][ESS] wifi2
1c:16:a7:12:4d:a6 2412 -23 [WPA-PSK-CCMP][WPA2-PSK-CCMP][ESS] wifi3
> add_network # 添加网络
2
<3>CTRL-EVENT-NETWORK-ADDED 2
> set_network 2 ssid "wifi3" # 设置网络2的ssid (配置文件中 network 的 ssid 变量)
> set_network 2 psk "passphrase" # 设置网络2的密码
> enable_network 2 # 使能网络2
> save_config # 保存到配置文件
> select_network 2 # 连接到网络2
非交互模式,直接在命令后面跟指令,例如:
$ wpa_cli -i wlp4s0 list_networks
ssid 中文字符无法显示
$ wpa_cli -i wlp4s0 scan
$ wpa_cli -i wlp4s0 scan_result | sed 's@\\@\\\\@g' | xargs -L1 echo -e
或者使用 iw
命令扫描:
# iw dev wlp4s0 scan | grep -i ssid | sed 's@\\@\\\\@g' | xargs -L1 echo -e
找到对应的中文 ssid
后,在 wpa_cli
中按之前的步骤操作。
注意:不能直接在
wpa_supplicant.conf
中添加中文字符的ssid
。