运行 无限 Bash 后台循环与 Paramiko

Run Infinite Bash loop in background with Paramiko

我需要 运行 一个无限 bash 循环用于远程服务器上的 background 监控任务。我正在使用 python Paramiko 和 运行 以下命令:

 s = paramiko.SSHClient()
 s.load_system_host_keys()
 s.connect(hostname, port, username, password)
 cmd = 'bash -c "while :; do cat /some/file >>/tmp/sca.mon; sleep 1 ; done" &'
 (stdin, stdout, stderr) = s.exec_command(cmd)

但是,无论出于何种原因,这都行不通。它只是停留在 exec_command 行。当paramiko提交后台bash命令并开始执行next时,如何强制paramiko离开远程服务器? 注意:我也试过 nohup bash -c 但是只要我使用 & 在远程服务器的后台推送命令 运行ning 它就不起作用。

似乎有效。我只是不指定 shell。我还使用 while true 因为我不熟悉 bash.

中的“while :
s = paramiko.SSHClient()
s.load_system_host_keys()
s.connect(hostname, port, username, password)
cmd = 'while true; do date >> ~/file.txt; sleep 1; done &'
(stdin, stdout, stderr) = s.exec_command(cmd)
s.close()

以下是我解决这个问题的方法(最终):

s = paramiko.SSHClient()
s.load_system_host_keys()
s.connect(hostname, port, username, password)
cmd = "echo 'while true; do date >> ~/file.txt; sleep 1; done &' >run.sh"
(stdin, stdout, stderr) = s.exec_command(cmd)
cmd = "bash run.sh </dev/null >>/dev/null 2>&1"
(stdin, stdout, stderr) = s.exec_command(cmd)
s.close()