使用Python 3.x打印实时SSH输出

时间:2016-06-16 11:28:38

标签: python python-3.x ssh

我有一个SSH从Windows7连接到远程ubuntu服务器并执行命令的脚本。在执行并完成命令后,该脚本一次性将Ubuntu命令输出返回到Windows cmd窗口。我只是想知道在下面的脚本中是否还有返回实时SSH输出,或者在看到输出之前我总是要等待命令完成。

这是我的工作代码:

import paramiko

ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
host = '9.10.11.12'
port, user, password = 22, 'usr', 'pass'
ssh.connect(host, port,  user, password)
stdin,stdout,stderr = ssh.exec_command("cd /opt/app && ./app-tool some_command")

for line in stdout.readlines():
    print(line)

ssh.close()

或者,如果使用SSH无法实现这一点,我将如何在上述脚本中引入旋转光标图标?感谢。

2 个答案:

答案 0 :(得分:0)

命令的输出似乎小于默认缓冲区大小,因为一旦命令完成,它就会被刷新。

默认情况下,bufsize为-1,表示使用系统默认缓冲区大小。如果bufsize设置为1,则它是行缓冲的。

使用

ssh.exec_command("<cmd>",bufsize=1)

答案 1 :(得分:0)

最后想出来,我在下面一行中使用'iter'方法:

for line in iter(stdout.readline,""): 
    print(line)