[Linux] 命令行下连接无线网络

因为点小事,把原来是 Ubuntu 的 ThinkPad E545 下半身里装了个 CentOS 7.9,没有图形界面。连接无线网络是个不熟悉的活儿,所以就得记录一下。

wpa_supplicantwpa_cli 是有的。这前后两者是服务器和客户端的关系,所以先要把服务器跑起来。按照 wpa_supplicant 的输出帮助,其典型用法如 wpa_supplicant -Dnl80211 -iwlan0 -c/etc/wpa_supplicant.conf,在实际环境中看了一下,wpa_supplicant.conf 配置文件是有一个现成的,位置在 /etc/wpa_supplicant 下,文件里的内容只有两行,

-i 参数的接口也可以通过 ip link 命令看到,唯独 -D 所需的驱动名不知道该怎么写。不知道怎么写就不写呗,先试试,既不犯法也不要命,于是,wpa_supplicant -iwlp3s0 -c/etc/wpa_supplicant/wpa_supplicant.conf 了一下,输出了一行字,似乎成功了。当然了,这是练手,所以没有加 -B 参数让它以守护进程的方式运行到后台。

接下来就要摆弄 wpa_cli 了。首先是 wpa_cli scan,在输出的内容里首先是说它帮着自动选择了一个接口,名叫 p2p_dev_wlp3s0,由于后缀里有真实设备名,还以为前半部分的前缀是惯例,可是用 wpa_cli scan_results 命令查看扫描结果的时候,结果为空。于是 ls -l /var/run/wpa_supplicant 了一下,发现其下有两个文件,一个是前述被自动选中的,另一个则是不带有前缀的真实设备名。于是又分别执行了 wpa_cli -i wlp3s0 scan 和 wpa_cli -i wlp3s0 scan_results 命令,这下就看到周围的接入点名称列表了。

当运行 wpa_cli -i wlp3s0 命令时,即未指定要执行的动作,则会进入交互模式。可以执行 status 查看一些信息,使用 add_network 命令增加一个网络(显然,你应该能想到还有 list_networks 和 remove_network 命令),然后给新增的网络设置属性,set_network 0 ssid "留下买路钱" 指定名称,set_network 0 psk "********" 指定密码,要记住这两个属性指定的时候前后的双引号别漏了。有说还要用 set_network 0 key_mgmt WPA-PSK 指定验证方式的,但老夫的执行结果都是 FAIL。截至目前,这是增加并指定了一个网络的信息,真正要连接到它的话,需要使用 enable_network 0 命令。

很可惜的是,眼看着输出了很多信息,显然是在尝试连接,但最终的结果还是失败了。信息里写道“<3>CTRL-EVENT-SSID-TEMP-DISABLED id=0 ssid=”XXXXX” auth_failures=5 duration=60 reason=CONN_FAILED” ,老夫暂时将失败原因归结为下半身中内置的无线网卡没有天线,信号过于衰弱所致。后续老夫会动手实践一个信号增强方案,也不知后果会如何,敬请期待。

更新

昨(2024-03-19)晚,老电工来访,于是开始实践信号增强的想法(另文详述)。材料准备上出了点小状况,原本认为无需焊接技的方案需要稍作修订,焊枪一动,也算老电工人尽其才。路由器距离电脑很近,也就不到半米。之前查看信号强度(wpa_cliscan_results 命令输出中带有)为 -76,改造后立刻查看为 -33,后来稳定运行在 -42 上下。执行 enable_network 命令当即成功。接着,还要取得 IP 地址,执行 dhclient 命令即可。

参考资料

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注