我来找你们有个奇怪的问题。
对于我们的项目,我们在Raspberry Pi3上使用Pi3(运行Raspbian)。我们使用以下库构建一个wifi模块:WifiControl。为了监视Raspberry上应用程序的日志,我们使用pm2。为了输入Pi需要连接的SSID和密码,我们有一个小小的GUI界面,允许用户将这些细节发送到Pi。
情况如下:
如果我们在连接尝试期间使用pm2监视Pi的日志(我们将ssh放入Pi中,然后使用pm2日志),这是很好的。当我们这样使用时,Pi总是连接到wifi (假设凭证输入是正确的)。
现在,如果我们重复上述完全相同的步骤,但这次我们没有ssh进入Pi并跟踪正在发生的事情,Pi永远无法连接。是什么原因导致了这种"schrodingers wifi",在这种情况下,观察连接尝试意味着它的工作,而不观察它意味着它不工作?下面我在两次不同的连接尝试中添加了来自pm2的日志。前缀为“WifiControl”的行是库的调试输出。
在观察连接尝试期间的输出:
1|OCB-RN3K | 2017-11-02 10:46 +00:00: [2017-11-02T10:46:05.709Z] [WIFI]: Trying to connect to: { ssid: 'ssid', password: 'password' }
1|OCB-RN3K | 2017-11-02 10:46 +00:00: WiFiControl: It appears there is already a connection for this SSID.
1|OCB-RN3K | 2017-11-02 10:46 +00:00: WiFiControl: Executing: nmcli connection delete "ssid"
1|OCB-RN3K | 2017-11-02 10:46 +00:00: WiFiControl: Success!
1|OCB-RN3K | 2017-11-02 10:46 +00:00: WiFiControl: Executing: nmcli device wifi connect "ssid" password "password"
1|OCB-RN3K | 2017-11-02 10:46 +00:00: WiFiControl: Success!
1|OCB-RN3K | 2017-11-02 10:46 +00:00: WiFiControl: WiFi connection request to "ssid" has been processed.
1|OCB-RN3K | 2017-11-02 10:46 +00:00: WiFiControl: Successfully connected to "ssid"
1|OCB-RN3K | 2017-11-02 10:46 +00:00: [2017-11-02T10:46:09.681Z] [WIFI]: Successfully connected to: Onmi Airspace
1|OCB-RN3K | [2017-11-02T10:46:09.682Z] [CONTROLS]: WiFi Connected!未观察到连接尝试后的输出:
[WIFI]: Trying to connect to: { ssid: 'ssid', password: 'password' }
1|OCB-RN3K | 2017-11-02 10:48 +00:00: WiFiControl: Executing: nmcli device wifi connect "ssid" password "password"
1|OCB-RN3K | 2017-11-02 10:48 +00:00: WiFiControl: WiFi connection request to "ssid" has been processed.
1|OCB-RN3K | 2017-11-02 10:48 +00:00: [2017-11-02T10:48:56.737Z] [WIFI]: Error during connection attempt [1/3]: { ssid: 'ssid',
1|OCB-RN3K | success: false,
1|OCB-RN3K | msg: 'Error: Could not connect to ssid' }这已经经受了多次考验,我们相信这不是巧合。
发布于 2017-11-03 15:23:37
此问题似乎与pm2日志无关,但与Raspberry上的一些权限缺失有关。这意味着当我们将ssh放入Pi中时,我们将登录并触发对此用户的正确权限,允许nmcli运行(即使程序在启动时作为我们在ssh期间使用的相同用户登录)。
编辑:毕竟,以下内容不起作用:
这个问题通过授予运行程序的用户sudo特权得到了解决,我们现在正在研究关于权限的其他选项(因为sudo有点过于热情)。我把这个问题留待进一步参考,因为这是一个很难缩小范围的错误。
https://stackoverflow.com/questions/47073493
复制相似问题