将 Linux 命令从一台机器提供给另一台机器的最佳方法是什么?



我的笔记本电脑上有一个Django项目。它在我的机器上工作得很好。

此 Web 应用以图像的形式从用户那里获取输入,并读取其中的内容。如果数据库中已存在内容,则会在另一台计算机上运行 Linux 命令。两台计算机都连接到同一网络。

目前,我正在使用SSH连接到另一台计算机,但它每次都要求输入密码。有什么方法可以消除每次要运行命令时输入密码的需要?

解决方案 1:使用 SSH 预共享密钥通过 SSH 登录,无需密码。有关如何操作,请参阅此链接。正确配置后,您可以在服务器上运行命令:

ssh hostname-or-ip-of-the-raspi command arg1 arg2 ...

并将在树莓派上执行command arg1 arg2 ...,而不会提示输入密码。

解决方案 2:使用 TCP 通信,为 Raspberry PI 编写一个服务器,为您的服务器编写一个客户端。您可以使用原始套接字或一些高级库,例如zmq

我认为您是一个简单的中级程序员,并在此基础上为您提供两种解决方案及其优缺点。

解决方案 1:在 Raspberry PI 上使用简单的 Flask 应用程序

可以修改以下代码,以请求在 PI 上运行的简单应用执行任何操作。

法典:

from flask import Flask
app = Flask(__name__)
@app.route('/runMotor')
def hello_world():
runMotor()
# Run any script here
return "Motor Ran"

然后,您可以使用树莓来调用以下内容:

<your_rasp_ip>:<port>/runMotor

优点: 易于实施,您甚至可以将其进一步移动以从防火墙外部使用。

缺点: 速度慢,不适合非常快速的并发请求。并发性是失败(或者您可以将请求排队,然后检查此问题(

使用MQTT 的解决方案 2:MQTT 是一种机器对机器 (M2M(/"物联网"连接协议。它被设计为极其轻量级的发布/订阅消息传递传输。

您可以使用您的代码,在此处结帐示例

优点:MQTT 非常轻量级并消除了并发开销,是一种异步消息传递协议。这最适合用于实时系统。

缺点:MQTT 是一个非常轻量级的消息传递协议,不能支持重负载。

相关内容

最新更新