通过SSH执行远程Python脚本

24 投票
4 回答
57261 浏览
提问于 2025-04-16 07:04

我想在15台以上的远程机器上通过SSH执行一个Python脚本。在启动这个脚本或命令后,我需要断开SSH连接,但希望这些进程在后台继续运行,直到它们完成。

我之前用过Paramiko和PySSH,所以再次使用它们没有问题。我只需要知道的是,如何在Python中断开SSH连接(因为通常本地脚本会等每台远程机器处理完再继续)。

4 个回答

1

如果你需要在很多电脑上做重复性的工作,比如安装软件和运行设置脚本,那你可以考虑使用像Fabric这样的工具。

Fabric是一个Python(2.5或更高版本)库和命令行工具,主要用来简化通过SSH进行应用部署或系统管理的过程。

它提供了一些基本的操作,可以用来执行本地或远程的命令(可以是普通命令,也可以是用sudo权限的命令),还可以上传和下载文件。此外,它还有一些辅助功能,比如可以提示用户输入信息,或者在需要的时候中止执行。

通常的使用方法是创建一个包含一个或多个函数的Python模块,然后通过fab命令行工具来执行这些函数。

4

在Linux电脑上,你可以用'at'命令来运行脚本。

你只需要输入这条命令:echo "python scriptname.py" ¦ at now

35

这可能有效,或者有类似的做法:

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

基本上,可以看看这个叫做 nohup 的命令。

撰写回答