一个很棘手的问题

写这篇博文是因为我曾经碰到一个棘手的问题,我想很多使用树莓派的人应该也碰到类似问题,问题描述如下:

我们做一个用树莓派控制打印机的项目,我们的树莓派需要连接我们指定的5G路由器,但是我的树莓派里面连过好多个wifi热点,此时,当我们的树莓派开机的时候,它会从第一个扫描,并且以它系统历使记录里面的密码登陆,如果登陆成功,就不会去连我们想要的wifi热点,怎么解决这个问题?

如何编辑wpa_supplicant.conf

其实在树莓派中,连接wifi时通过wpa_supplicant.conf这个文件来控制的,或者应该这样说,在linux系统中时通过wpa_supplicant.conf来控制各个wifi的ssid名称和密码的,所有wifi名称和密码时保存在这里的,下面就是我树莓派上的wpa_supplicant.conf文件

pi@xiajiashan:~$ sudo cat /etc/wpa_supplicant/wpa_supplicant.conf 
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
country=CN
network={
        ssid="4GPRINTER"
        psk="12345678"
        key_mgmt=WPA-PSK
}
network={
        ssid="CKKJ"
        psk="a1234567"
        key_mgmt=WPA-PSK
}
network={
        ssid="xiajiashan"
        psk="12345678"
        key_mgmt=WPA-PSK
}
network={
        ssid="CMCC-Kqzn"
        psk="88888888"
        key_mgmt=WPA-PSK
}
network={
        ssid="4G UFI_A6D"
        psk="1234567890"
        key_mgmt=WPA-PSK
}
network={
        ssid="zjzj"
        psk="123456789"
        key_mgmt=WPA-PSK
}
pi@xiajiashan:~$ 

为了解决这个问题——让树莓派去连我指定的wifi,怎么办呢?
我们只需要把我们不希望树莓派去连接的wifi热点的密码改一下,改动的目的就是为了让它连接的时候因为密码不对而去找另一个wifi热点,直到找到我们指定的打印机的那个热点4GPRINTER,有人会说,哎,你这个热点不是第一个吗,树莓派应该第一个找的就是它啊,哈哈,其实树莓派在界面上显示的时候,那个顺序不是按照我们这个文件来显示的。

如何让树莓派开机自动执行wpa_supplicant.conf配置脚本

好接下来,怎么让它执行这个文件呢?

我们只需要在rc.local下面加一条命令就行了
wpa_supplicant -i wlan0 -c /etc/wpa_supplicant/wpa_supplicant.conf
就像这样:

pi@xiajiashan:~$ cat /etc/rc.local 
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
wpa_supplicant -i wlan0 -c /etc/wpa_supplicant/wpa_supplicant.conf
exit 0
pi@xiajiashan:~$

好了,本文到此结束,希望能帮到您!