我在 Raspberry Pi 上有一个 Python/Flask Web 应用程序,它调用以下 bash 脚本 ( connect_to_wifi ) 来连接到 WiFi:
sudo killall wpa_supplicant
sudo wpa_supplicant -i wlan0 -c /etc/wpa_supplicant/wpa_supplicant.conf
sudo dhclient wlan0
基本上,用户输入他们的 WiFi 凭据,这些凭据保存在 中wpa_supplicant.conf
,然后运行此脚本。它工作得很好......但是,如果他们输入错误的凭据,dhclient 会在失败之前 永远挂起。
我想要做的是在继续使用 dhclient 之前检测凭据是否正确。我知道wpa_supplicant
如果凭据错误,我可以检查命令的输出是否出现 4 次握手失败,但是当我通过以下方式从 Python 应用程序调用此脚本时:
p = Popen(['connect_to_wifi'], stdout=PIPE, bufsize=1)
with p.stdout:
for line in iter(p.stdout.readline, b''):
print line,
p.wait()
sudo wpa_supplicant -i...
没有捕获该行的任何输出。如果我检测到握手失败,我想要做的就是立即结束,但是我无法在 Python 中捕获输出。