【问题标题】:Execute remote python script via SSH通过 SSH 执行远程 python 脚本
【发布时间】:2011-05-09 23:39:57
【问题描述】:

我想使用 SSH 在多台 (15+) 远程机器上执行 Python 脚本。调用脚本/命令后,我需要断开 ssh 会话并保持进程在后台运行,只要它们需要。

我过去使用过 Paramiko 和 PySSH,所以再次使用它们没有问题。我唯一需要知道的是如何在 python 中断开 ssh 会话(因为通常本地脚本会等待每台远程机器完成处理,然后再继续)。

【问题讨论】:

    标签: python ssh


    【解决方案1】:

    这可能有效,或类似的东西:

    ssh user@remote.host nohup python scriptname.py &
    

    基本上,看看nohup 命令。

    【讨论】:

    • 谢谢。这正是我想要的。 :)
    • 嗨!我正在尝试这个解决方案,但我的 python 没有执行......我该如何调试有什么问题?谢谢:)
    【解决方案2】:

    在 Linux 机器上,您可以使用“at”运行脚本。

    echo "python scriptname.py" ¦ 现在

    【讨论】:

    • :)。我个人发现“at”对我来说更通用,但“nohup”在很多情况下都足够好。
    • 我也尝试过这个解决方案,但是我的 python 没有执行......我该如何调试有什么问题?谢谢:)
    【解决方案3】:

    如果您要在许多主机上执行重复性任务,例如部署软件和运行设置脚本,您应该考虑使用类似Fabric

    Fabric 是一个 Python(2.5 或更高版本)库和命令行工具,用于 简化 SSH 在应用程序部署或系统中的使用 管理任务。

    它提供了一套基本的操作来执行本地或远程 shell 命令(通常或通过 sudo)和上传/下载文件, 以及提示运行用户等辅助功能 用于输入或中止执行。

    典型用途包括创建一个包含一个或多个的 Python 模块 函数,然后通过 fab 命令行工具执行它们。

    【讨论】:

      【解决方案4】:

      在这种情况下,您甚至可以使用tmux。

      根据 tmux 文档:

      tmux 是一个终端多路复用器。它使您可以在一个终端中的多个程序之间轻松切换,分离它们(它们继续在后台运行)并将它们重新附加到不同的终端。并且做得更多

      从 tmux 会话中,您可以运行脚本、退出终端、再次登录并检查,因为它会保持会话直到服务器重新启动。

      How to configure tmux on a cloud server

      【讨论】:

        猜你喜欢
        • 2017-08-02
        • 1970-01-01
        • 2014-08-29
        • 2014-01-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-06-13
        • 1970-01-01
        相关资源
        最近更新 更多