【发布时间】:2018-01-11 19:00:57
【问题描述】:
我正在编写一个 Python CGI 脚本,我想在笔记本电脑的浏览器上运行它。该脚本将通过 SSH 连接到两个 Pi,并发出拍照命令。托管此脚本的服务器位于我要通过 SSH 连接的其中一个 Pi 上,并且该 Pi 还充当另一个 Pi 和我的笔记本电脑连接的接入点(一切都是 LAN,未连接到 Internet) .
我成功地在笔记本电脑的浏览器上运行此脚本,以便在两个 Pis 上运行像 ls -l 这样的简单命令,并在浏览器上打印出两者的结果。但是,我最终希望能够将raspistill 命令提供给两个 Pis。当我这样做时,只有带有服务器的 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 包的问题。
【问题讨论】:
标签: python apache server raspberry-pi raspistill