2010-11-14 247 views
15

我想使用SSH在几个(15+)远程计算机上执行Python脚本。在调用脚本/命令后,我需要断开ssh会话并保持进程在后台运行,只要它们是必需的。通过SSH执行远程python脚本

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

回答

21

这可能会实现,或类似的东西:

ssh [email protected] nohup python scriptname.py & 

基本上,看看在nohup命令。

+0

谢谢。这正是我想要的。 :) – nka 2010-11-15 18:11:26

+0

嗨!我正在尝试这个解决方案,但我的python没有执行......我怎样才能调试出了什么问题?谢谢:) – Pitto 2013-04-07 13:33:36

4

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

回声“蟒蛇scriptname.py” |在现在

+0

感谢您的提示,但我设法通过nohup做到这一点。 – nka 2010-11-15 18:12:20

+1

:)。我个人发现'at'对我来说更加灵活,但'nohup'在很多情况下都足够好。 – chnrxn 2010-11-24 16:50:21

+0

我也试过这个解决方案,但是我的python没有执行......我怎样才能调试什么是错的?谢谢 :) – Pitto 2013-04-07 13:33:54

1

如果你要在许多主机上执行重复性任务,例如像部署软件并运行安装脚本,你应该考虑使用类似Fabric

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

它提供操作的基本套件,用于执行本地或远程 外壳命令(通常或经由须藤)和上传/下载文件, 以及辅助功能,诸如提示运行的用户 用于输入,或中止执行。

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

相关问题