与paramiko一起运行命令一段时间

时间:2014-01-06 01:36:26

标签: python ssh output paramiko

我在Python中使用Paramiko模块ssh到另一台机器并执行命令。

该命令调用一个连续产生输出的程序。我的目标是运行这样的东西:

stdin, stdout, stderr = ssh.exec_command(mycommand)  

附加约束,在X秒后“我的命令”终止,就像按 Ctrl + C 并将输出返回到stdout。

有没有办法(或另类方式)呢?

1 个答案:

答案 0 :(得分:1)

如果远程主机正在运行Unix,您可以传递一个shell脚本来执行此操作mycommand

stdin, stdout, stderr = client.exec_command(
    """
    # simple command that prints nonstop output; & runs it in background
    python -c '
import sys
import time

while 1:
  print time.time()
  sys.stdout.flush()
  time.sleep(0.1)
    ' &
    KILLPID=$!; # save PID of background process
    sleep 2; # or however many seconds you'd like to sleep
    kill $KILLPID
    """)

运行时,会以100毫秒的间隔打印当前时间,持续2秒:

... 1388989588.39
... 1388989588.49
... 1388989588.59
... 1388989588.69
... 1388989588.79
... 1388989588.89
... 1388989588.99
... 1388989589.1
... 1388989589.2
... 1388989589.3
... 1388989589.4
... 1388989589.5
... 1388989589.6
... 1388989589.71
... 1388989589.81
... 1388989589.91
... 1388989590.01
... 1388989590.11
... 1388989590.21
... 1388989590.32

然后优雅地停止。