Connect to a wireless network using command line nmcli
How to connect to wifi using nmcli?
How can I find out what plugin is missing in nmcli?
我们的系统是 CentOS 7.5,最小化安装的,所以没有图形化界面,没有办法通过网线接入路由设备,要联网只能接入无线热点;
连接无线热点可以使用 WAP Supplicant 工具,也可以使用 NetworkManager 工具,还有一些其他的工具;
该部分将介绍 NetworkManager 来连接无线热点的方法。之所以使用它,是因为 NetworkManager 管理网络及其方便;
#1 安装 NetworkManager-wifi 插件
如果设备无法连接网络,则无法安装插件,方法如下:
1)在设备上使用 WPA Supplicant 工具包先连接到无线;
2)把设备接到笔记本,然后笔记本的无线和有线桥接,但是 STATION MODE 下的无线网卡无法桥接;
3)下载离线包,复制到设置上使用 RPM 手动安装;
4)可能开有其他的方法……
很显然(1),对于我们来说,是最便捷的。所以,我们先使用 wpa_supplicant(8)进行无线连接,这里不展开介绍,参考 Connect to Wi-Fi 笔记。注意,使用 wpa_supplicant(8)只是临时连接无线热点,“临时”不是不能连接热点,因为它不太适用于网络的管理,在管理方面不如 NetworkManager 灵活。所以即使连接上了网络,也只是临时使用以下,最终还是使用 NetworkManager 进行连接;
然后,执行 yum install -y NetworkManager-wifi 来安装插件。实际上我们执行了 yum install -y NetworkManager*来安装了所有的插件,以防还需要其他的插件或进行其他的网络配置;
重启 NetworkManager 服务来加载插件:systemctl restart NetworkManager.service
若未安装该插件,控制台会输出 Error: no device found for connection ‘wlan0’。执行 journactl -f -u NetworkManager 命令查看日志,会发现错误(wlan0): ‘wifi’ plugin not available; creating generic device,即缺少了 NetworkManager-wifi 插件;
#2 通过命令行来连接 Wi-Fi 热点
#2 查看设备状态。执行命令 nmcli device 查看设备状态。在正常情况下,看到的输出如下:
# nmcli device DEVICE TYPE STATE CONNECTION wlan0 wifi disconnected -- lo loopback unmanaged --
#3 扫描无线热点。使用 nmcli device wifi list 命令来扫描热点。如下示例:
# nmcli device wifi list SSID MODE CHAN RATE SIGNAL BARS SECURITY xmstro-805 Infra 1 54 Mbit/s 64 ▂▄▆_ WPA1 WPA2 CMCC-kxH9 Infra 6 54 Mbit/s 59 ▂▄▆_ WPA1 WPA2 ChinaNet-ZmAv Infra 9 54 Mbit/s 49 ▂▄__ WPA1
#4 连接无线热点(关键步骤)。执行 nmcli device wifi connect “SSID-Name” password “your password”命令连接无线热点。如下示例:
# nmcli device wifi connect "xmstro-805" password "8001801881" Device 'wlan0' successfully activated with 'f858dc0b-0912-4b18-8630-5d88992b65a5'.
#5 查看连接状态。使用 nmcli connection show 命令查看连接状态。如下示例:
# nmcli connection show NAME UUID TYPE DEVICE xmstro-805 f858dc0b-0912-4b18-8630-5d88992b65a5 802-11-wireless wlan0
#6 最后,如果配置正确,则网络会成功连接。且 IP Address 也是自动获取的,无需手动设置(除非要使用固定地址);
#0 其他设置方法。我们还能够使用老方法(我们使用了这种方法,因为可设置更多的信息):
nmcli c add type wifi con-name "<name>" ifname "wlan0" ssid "<ssid>" nmcli c modify <name> wifi-sec.key-mgmt wpa-psk wifi-sec.psk "<password>" nmcli c up "<name>"