【问题标题】:What is the best way to give a Linux command from one machine to a different machine? [closed]将 Linux 命令从一台机器发送到另一台机器的最佳方式是什么? [关闭]
【发布时间】:2018-10-10 08:10:26
【问题描述】:

我的笔记本电脑上有一个 Django 项目。它在我的机器上运行良好。

这个网络应用程序以图像的形式从用户那里获取输入并读取其中的内容。如果内容已经存在于数据库中,它会在另一台机器上运行 Linux 命令。两台机器都连接到同一个网络。

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

【问题讨论】:

  • 这个问题不应该在堆栈交换上吗?
  • 也稍微描述一下,你的machine1和machine2是否在同一个路由器后面的同一个网络上?那我可以给你一些帮助。
  • 是的,两者都连接到同一个wifi。
  • Stack Overflow 是一个编程和开发问题的网站。这个问题似乎离题了,因为它与编程或开发无关。请参阅帮助中心的What topics can I ask about here。也许Super UserUnix & Linux Stack Exchange 会是一个更好的提问地点。

标签: python django linux networking raspberry-pi


【解决方案1】:

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

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

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

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

【讨论】:

    【解决方案2】:

    我认为您是一个简单的中级程序员,并基于此为您提供两种解决方案,各有优缺点。

    解决方案 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
    

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

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

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

    您可以使用您的代码,结帐example here

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

    缺点:MQTT 是一种非常轻量级的消息传递协议,无法支持大量负载。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-05-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多