【问题标题】:Get output of Python remotely in realtime实时远程获取 Python 输出
【发布时间】:2017-04-26 14:38:45
【问题描述】:

我有这个简单的 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 都可以。

【问题讨论】:

标签: python ssh paramiko


【解决方案1】:

-u 传递给python 以获取unbuffered stdout 并遍历您的stdout 以获取每一行:

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

【讨论】:

  • 太棒了!它现在有效!非常感谢。你拯救了我的夜晚
猜你喜欢
  • 2015-06-08
  • 2021-01-18
  • 2021-12-27
  • 1970-01-01
  • 2010-10-22
  • 2021-04-15
相关资源
最近更新 更多