为什么paramiko ssh无法实时输出打印信息

时间:2017-09-05 11:59:45

标签: python python-3.x ssh

我使用python3 ssh,现在我可以登录远程设备,并执行我的远程C程序,但程序打印信息无法实时显示在本地PC上。如果我的C程序使用setbuf(stdout, NULL);设置非缓冲,我的PC可以获得实时信息;我想知道C程序是否不设置非缓冲,如何在本地PC上获取远程实时信息。

这是我的代码:

def get_ssh_log(hostip, login_name, pw, privaete_key, cmd):
    ssh = paramiko.SSHClient()
    ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    ssh.connect(hostname='%s' % hostip, port=22, username='%s' % login_name, password='%s' % pw,key_filename='%s' % privaete_key)
    stdin, stdout, stderr = ssh.exec_command("%s" % cmd, bufsize=1)
    for line in iter(stdout.readline, ""):
        print(line)
    ssh.close()

1 个答案:

答案 0 :(得分:0)

您可以从unbuffer包中的包装器expect下运行任何程序。在你的情况下:

ssh.exec_command("unbuffer %s" % cmd)

当然,这假定目标计算机上安装了unbuffer

参考:https://unix.stackexchange.com/questions/25372/turn-off-buffering-in-pipe