如何使用paramiko SSHClient连续输出

时间:2017-12-27 06:00:57

标签: python python-2.7 ssh paramiko

我想ssh到远程服务器并运行一些shell脚本(如scp或yum等)。

一切顺利,除了我不能继续坚持sch进展或yum下载进度。 <{1}}将被屏蔽,无法返回。

我猜paramiko可能会逐行转移假stdout流,但这些渐进式输出不会输出行分隔符,而是'\ r'。

无论如何都有解决这个问题的方法吗?

以下是我现在要做的事情,其中​​f.readssh

paramiko.SSHClient()

1 个答案:

答案 0 :(得分:2)

stdout.read(N)仅在读取N个字节或EOF时返回。只要有新数据,stdout.channel.recv(N)就会返回。

这对我来说很好用:

stdin, stdout, sterr = ssh.exec_command(cmd, get_pty=True)
while True:
    v = stdout.channel.recv(1024)
    if not v:
        break
    sys.stdout.write(v)
    sys.stdout.flush()