我有一个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无法实现这一点,我将如何在上述脚本中引入旋转光标图标?感谢。
答案 0 :(得分:0)
命令的输出似乎小于默认缓冲区大小,因为一旦命令完成,它就会被刷新。
默认情况下,bufsize
为-1,表示使用系统默认缓冲区大小。如果bufsize
设置为1,则它是行缓冲的。
使用
ssh.exec_command("<cmd>",bufsize=1)
答案 1 :(得分:0)
最后想出来,我在下面一行中使用'iter'方法:
for line in iter(stdout.readline,""):
print(line)