如何使用paramiko SSHClient连续输出

问题描述 投票:0回答:1

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

一切顺利,除了我不能得到像scp进展或yum下载进度一样的stdout。 f.read将被阻止,没有任何回报。

我猜paramiko可以逐行传输假stdout流,但这些渐进输出不输出行分隔符,而是'\ r'。

反正有没有解决这个问题?

以下是我现在正在做的事情,其中​​qazxsw poi是qazxsw poi

ssh
python python-2.7 ssh paramiko
1个回答
2
投票

paramiko.SSHClient()仅在读取N个字节或EOF时返回。一旦有新数据,def read_buffer_line(f): line = "" while not f.channel.exit_status_ready(): c = f.read(1) if c == '\n': yield line line = '' else: line += c yield line + f.read() def ssh_run(ssh, cmd): stdin, stdout, sterr = ssh.exec_command(cmd, get_pty=True, bufsize=1) for l in read_buffer_line(stdout): print l 就会返回。

这对我来说很好:

stdout.read(N)
© www.soinside.com 2019 - 2024. All rights reserved.