使用Paramiko在背景中运行无限猛击循环

时间:2015-02-14 21:20:05

标签: python bash background paramiko sysadmin

我需要为远程服务器上的后台监控任务运行无限bash循环。我正在使用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行。当提交后台bash命令并开始执行下一个时,如何强制paramiko离开远程服务器? 注意:我也尝试了nohup bash -c,但只要我使用&推送在远程服务器上运行的命令,它就无法工作。

2 个答案:

答案 0 :(得分:1)

似乎有效。我只是没有指定shell。我也在使用而非,因为我不熟悉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()

答案 1 :(得分:0)

以下是我如何解决这个问题(最后):

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()