【发布时间】:2011-05-09 23:39:57
【问题描述】:
我想使用 SSH 在多台 (15+) 远程机器上执行 Python 脚本。调用脚本/命令后,我需要断开 ssh 会话并保持进程在后台运行,只要它们需要。
我过去使用过 Paramiko 和 PySSH,所以再次使用它们没有问题。我唯一需要知道的是如何在 python 中断开 ssh 会话(因为通常本地脚本会等待每台远程机器完成处理,然后再继续)。
【问题讨论】:
我想使用 SSH 在多台 (15+) 远程机器上执行 Python 脚本。调用脚本/命令后,我需要断开 ssh 会话并保持进程在后台运行,只要它们需要。
我过去使用过 Paramiko 和 PySSH,所以再次使用它们没有问题。我唯一需要知道的是如何在 python 中断开 ssh 会话(因为通常本地脚本会等待每台远程机器完成处理,然后再继续)。
【问题讨论】:
【讨论】:
在 Linux 机器上,您可以使用“at”运行脚本。
echo "python scriptname.py" ¦ 现在
【讨论】:
如果您要在许多主机上执行重复性任务,例如部署软件和运行设置脚本,您应该考虑使用类似Fabric
Fabric 是一个 Python(2.5 或更高版本)库和命令行工具,用于 简化 SSH 在应用程序部署或系统中的使用 管理任务。
它提供了一套基本的操作来执行本地或远程 shell 命令(通常或通过 sudo)和上传/下载文件, 以及提示运行用户等辅助功能 用于输入或中止执行。
典型用途包括创建一个包含一个或多个的 Python 模块 函数,然后通过 fab 命令行工具执行它们。
【讨论】:
在这种情况下,您甚至可以使用tmux。
根据 tmux 文档:
tmux 是一个终端多路复用器。它使您可以在一个终端中的多个程序之间轻松切换,分离它们(它们继续在后台运行)并将它们重新附加到不同的终端。并且做得更多
从 tmux 会话中,您可以运行脚本、退出终端、再次登录并检查,因为它会保持会话直到服务器重新启动。
【讨论】: