我尝试使用 Python 脚本重写“wpa_supplicant.conf”文件,但整个 Wi-Fi 系统刚刚崩溃,我必须重新格式化并重新在 SD 卡上重新安装 Raspbian OS。在 SD 卡的引导驱动器中创建新的“wpa_supplicant.conf”文件也不起作用。幸运的是,我找到了使用 Python 脚本连接到新网络的解决方案,但在此之前,您需要先执行这些步骤。
解决方案:不要使用 重写“wpa_supplicant.conf” ,而是从路径with open('/etc/wpa_supplicant/wpa_supplicant.conf', 'w') as file:
中重写“interfaces”文件。/etc/network/interfaces
source-directory /etc/network/interfaces.d
在“interfaces”文件的行下方添加此代码:
auto wlan0
iface wlan0 inet dhcp
wpa-ssid "WIFI NETWORK NAME HERE"
wpa-psk "WIFI NETWORK PASSWORD HERE"
保存“interfaces”文件并打开“wpa_supplicant.conf”文件。
update_config=1
在 和的行ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
之间添加network={...
。根据我的观察,这有点忽略了文件的内容,network={...
并将其对 Wi-Fi 信息的检索转移到/etc/network/interfaces
文件中。
保存文件并重新启动。
重新启动后,您可以在想要更改到新网络时通过执行 Python 脚本来重写/etc/network/interfaces
文件(该脚本必须在最后导致系统重新启动才能使新的 Wi-Fi 更改生效)。(我不知道'interfaces'文件是否允许添加多个网络,到目前为止我一次只测试了一个网络,因为这已经实现了我的项目目标。)这是一个Python代码示例来更改“interfaces”文件中的网络信息:
import os
import time
SSID = input('Enter SSID: ')
password = input("Enter password: ")
with open('/etc/network/interfaces', 'w') as file:
content = \
'# interfaces(5) file used by ifup(8) and ifdown(8)\n\n' + \
'# Please note that this file is written to be used with dhcpcd\n' + \
"# For static IP, consult /etc/dhcpcd.conf and 'man dhcpcd.conf'\n" + \
'# Include files from /etc/network/interfaces.d:\n' + \
'source-directory /etc/network/interfaces.d\n' + \
'auto wlan0\n' + \
'iface wlan0 inet dhcp\n' + \
'wpa-ssid "' + SSID + '"\n' + \
'wpa-psk "' + password + '"\n'
file.write(content)
print("Write successful. Rebooting now.")
time.sleep(2)
os.system('sudo reboot now')