我想ssh到远程服务器并运行一些shell脚本(如scp或yum等)。
一切顺利,除了我不能继续坚持sch进展或yum下载进度。 <{1}}将被屏蔽,无法返回。
我猜paramiko可能会逐行转移假stdout流,但这些渐进式输出不会输出行分隔符,而是'\ r'。
无论如何都有解决这个问题的方法吗?
以下是我现在要做的事情,其中f.read
是ssh
paramiko.SSHClient()
答案 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()