我使用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()
答案 0 :(得分:0)
您可以从unbuffer
包中的包装器expect
下运行任何程序。在你的情况下:
ssh.exec_command("unbuffer %s" % cmd)
当然,这假定目标计算机上安装了unbuffer
。
参考:https://unix.stackexchange.com/questions/25372/turn-off-buffering-in-pipe