想要从kivy应用程序添加wifi连接,我正在使用一个简单的功能来编辑wpa_supplicant.conf文件,在其中添加新的网络。
我的函数正确地将配置写入那里,并且看起来与通过树莓派GUI进行的配置相同...
但是当我重新启动树莓时,它说没有找到网络接口,但是如果我从wpa_supplicant.conf文件中删除最后添加的行,它会解决。由于某些原因,raspbian在编辑后无法正确读取此文件,但是在这里我看不到我做错了什么,这违背了默认配置。
希望有人可以给我一些提示...我以sudo身份运行脚本,所以不会出现任何权限问题,我试图研究编写config和raspbian提供的config的方式上的任何区别,但是没有头绪...
在这里您可以看到代码:
def CreateWifiConfig(SSID, password):
config = (
'\nnetwork={{\n' +
'\tssid="{}"\n' +
'\tpsk="{}"\n' + '}}').format(SSID, password)
print(config)
with open("/etc/wpa_supplicant/wpa_supplicant.conf", "a+") as wifi:
wifi.write(config)
wifi.close()
print("Wifi config added")```
答案 0 :(得分:1)
这只是一个简短的注释-我尚未运行您的代码,我只是根据我正在阅读的内容对其进行解释-但这里有几件事让我印象深刻:
1)我在您的配置中看不到key_mgmt
值。通常这类似于WPA-PSK
,但是您可以看到一些其他可能的值here
2)因为您使用的是the "with" statement,所以应该自动为您关闭该文件(您无需再次调用close()
)。
3)构建配置字符串的方式对我来说有点奇怪,这样的事情(完全主观,对我来说更易理解):
def CreateWifiConfig(SSID, password):
config_lines = [
'\n',
'network={',
'\tssid="{}"'.format(SSID),
'\tpsk="{}"'.format(password),
'\tkey_mgmt=WPA-PSK',
'}'
]
config = '\n'.join(config_lines)
print(config)
with open("/etc/wpa_supplicant/wpa_supplicant.conf", "a+") as wifi:
wifi.write(config)
print("Wifi config added")
4)这里要注意的另一件事是该代码不是幂等的-您将无法多次运行此代码而不会损害文件内容的完整性。您可能已经意识到了这一点,可能不太在意,但无论如何都只是指出来。
希望丢失的key_mgmt
就是全部。