Python 如何使用paramiko SSHClient获得连续输出

Python 如何使用paramiko SSHClient获得连续输出,python,python-2.7,ssh,paramiko,Python,Python 2.7,Ssh,Paramiko,我想要ssh到远程服务器并运行一些shell脚本(如scp或yum等) 一切都进行得很顺利,只是我无法持续获得scp进度或yum下载进度之类的信息。f.read将被阻止,不会返回任何内容 我猜paramiko可能会逐行传输假标准输出流,但这些渐进输出不是输出行分隔符,而是'\r' 有没有办法解决这个问题 下面是我现在所做的,其中ssh是paramiko.SSHClient() stdout.read(N)仅在读取了N个字节或获得EOF时返回。只要有新数据可用,stdout.channel.rec

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

一切都进行得很顺利,只是我无法持续获得scp进度或yum下载进度之类的信息。
f.read
将被阻止,不会返回任何内容

我猜paramiko可能会逐行传输假标准输出流,但这些渐进输出不是输出行分隔符,而是'\r'

有没有办法解决这个问题

下面是我现在所做的,其中
ssh
paramiko.SSHClient()

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