我的SSH.py目标是通过 SSH 连接到许多服务器来运行 Python 脚本 ( worker.py)。我正在使用 Paramiko,但对它非常陌生,并且不断学习。在我通过 ssh 连接的每台服务器上,我需要保持 Python 脚本运行——这是为了并行训练模型,因此脚本需要在所有机器上运行,以便联合更新模型参数/训练。服务器上的 Python 脚本需要运行,因此要么所有 SSH 连接都无法关闭,要么我必须找到一种方法,让服务器上的 Python 脚本即使关闭连接也能继续运行。
从广泛的谷歌搜索来看,您似乎可以通过nohup以下方式实现此目的:
client = paramiko.SSHClient()
client.connect(ip_address, username, password)
transport = client.get_transport()
channel = transport.open_session()
channel.exec_command("python worker.py > /logs/'command output' 2>&1")
Run Code Online (Sandbox Code Playgroud)
但是,我不清楚如何关闭/退出所有 SSH 连接?我正在运行该SSH.py文件cmd.exe,关闭该cmd.exe文件是否足以远程关闭所有进程?
此外,我的使用是否client.close()符合我的目的?请参阅下面我的代码。
# SSH.py
import paramiko
import argparse
import os
path = "path"
python_script = "worker.py"
# definitions for ssh connection and cluster
ip_list = ['XXX.XXX.XXX.XXX', XXX.XXX.XXX.XXX', XXX.XXX.XXX.XXX'] …Run Code Online (Sandbox Code Playgroud)