实时远程获取Python输出

时间:2017-04-26 14:38:46

标签: python ssh paramiko

我有这个简单的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 user@X.X.X.X "python /home/user/test.py"

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

1 个答案:

答案 0 :(得分:0)

-u传递给python以获取unbuffered stdout并迭代stdout以获取每一行:

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