2017-04-26 130 views
1

我有这个简单的Python代码:获取的Python输出远程实时

import time 

print "1" 
time.sleep(3) 
print "2" 
time.sleep(2) 

然后我用的paramiko远程运行它:

import paramiko 

ssh = paramiko.SSHClient() 

ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) 

ssh.connect('X.X.X.X', username='user', key_filename='/home/user/.ssh/id_rsa') 

stdin, stdout, stderr = ssh.exec_command('python /home/user/test.py') 
print stdout.read() 

ssh.close() 

它会等到Python代码完成和然后打印一切。但我希望它能实时打印每一行。我该怎么做?

谢谢。

更新:我试图运行通过SSH命令Python代码:

ssh [email protected] "python /home/user/test.py" 

和输出是一样的。它等到Python代码完成,然后打印出所有内容。 如果我远程运行一个shell脚本,ssh命令和paramiko都可以。

+0

这是一个答案了类似的问题:连续的paramiko标准输出(http://stackoverflow.com/questions/25260088/paramiko-with-continuous-stdout) –

+0

我阅读并遵循它,但没有区别 –

回答

0

通行证-upython得到unbuffered stdout和迭代您stdout得到各行:

stdin, stdout, stderr = ssh.exec_command('python -u /home/user/test.py') 
for line in stdout: 
    print line.rstrip() 
+0

令人惊叹!它现在有效!非常感谢。你救了我的夜晚 –