通过SSH执行远程Python脚本

24
我希望使用SSH在多个(15个以上)远程计算机上执行Python脚本。 在调用脚本/命令之后,我需要断开SSH会话并使进程在后台运行,直到不再需要为止。 我过去使用过Paramiko和PySSH,所以再次使用它们没有问题。唯一需要知道的是如何在Python中断开ssh会话(因为通常本地脚本会等待每个远程计算机完成处理才继续)。
4个回答

35

这个可能有效,或者类似这样:

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

基本上,看一下nohup命令。


嗨!我正在尝试这个解决方案,但我的Python没有执行...我该如何调试出错了什么?谢谢 :) - Pitto

4
在Linux机器上,您可以使用“at”运行脚本。
echo "python scriptname.py" ¦ at now

1
我个人发现“at”对我来说更加灵活,但在许多情况下,“nohup”已经足够好了。 - chnrxn
我也尝试了这个解决方案,但我的Python没有执行... 我该如何调试出错了什么?谢谢 :) - Pitto

1
如果您需要在多台主机上执行重复任务,例如部署软件和运行安装脚本,建议使用Fabric等工具。
Fabric是一个Python(2.5或更高版本)库和命令行工具,用于简化应用程序部署或系统管理任务中SSH的使用。
它提供了一组基本操作,用于执行本地或远程shell命令(通常或通过sudo)和上传/下载文件,以及辅助功能,如提示运行用户进行输入或中止执行。
典型的用法涉及创建一个包含一个或多个函数的Python模块,然后通过fab命令行工具执行它们。

1
你甚至可以在这种情况下使用tmux
根据tmux文档:

tmux是一个终端复用器。它允许您在一个终端中轻松切换多个程序,将它们分离(它们在后台运行)并重新连接到不同的终端。还有更多功能。

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接