我正在编写一个要在笔记本电脑浏览器上运行的 Python CGI 脚本。该脚本将通过 SSH 连接到两个 Pi,并发出拍照命令。托管此脚本的服务器位于我要通过 SSH 连接的其中一个 Pi 上,并且该 Pi 还充当另一个 Pi 和我的笔记本电脑连接的接入点(一切都是 LAN,未连接到 Internet) .
我能够在笔记本电脑的浏览器上成功运行此脚本,以ls -l
在两个 Pis 上运行简单的命令,并在浏览器上打印出两者的结果。但是,我最终希望能够raspistill
向两个 Pi 发出命令。当我这样做时,只有带有服务器的 Pi 正在拍摄图像,而另一个 Pi 没有。我认为这是因为没有为服务器正确设置权限(我尝试运行命令,sudo
但仍然没有运气)。但是,如果我在 Python IDLE 上运行相同的脚本,它就可以正常工作。有人可以帮我确定问题吗?
这是我的脚本:
#! /usr/bin/env python3
from pssh import ParallelSSHClient
import cgi
print("Content-Type: text/plain\r\n")
print("\r\n ")
host = ['172.24.1.1','172.24.1.112']
user = 'XXXX'
password = 'XXXX'
client = ParallelSSHClient(host, user, password)
output = client.run_command('raspistill -o test.jpg', sudo=True)
// AMENDMENT:
for line in output['172.24.1.1'].stdout: // works as well with '172.24.1.112'
print(line)
修正:显然,如果我从中输出任何东西,stdout
它就可以正常工作。为什么会这样?是只是在等我刷新输出还是什么?我怀疑这可能是我正在使用的 pssh 包的问题。