我使用python3 ssh,现在我可以登录远程设备,并执行我的远程C程序,但程序打印信息不能在本地pc上实时显示。如果我的C程序使用setbuf(stdout, NULL);
来设置非缓冲,我的电脑可以获得实时信息;我想知道如果C程序不设置非缓冲,我怎样才能获得本地PC上的远程实时信息。为什么paramiko ssh无法实时输出打印信息
这里是我的代码:
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()
你知道' “%s的” %cmd'只是'cmd'吧? –
我猜@JohnZwinck的评论也适用于此函数中'%'运算符的所有其他用途。 – BlackJack
@JohnZwinck是的,我知道“%s”%cmd只是cmd; – simon