远程实时获取Python的输出
Get output of Python remotely in realtime
我有这个简单的 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 都可以。
将 -u
传递给 python
以获取 unbuffered stdout 并遍历您的 stdout
以获取每一行:
stdin, stdout, stderr = ssh.exec_command('python -u /home/user/test.py')
for line in stdout:
print line.rstrip()
我有这个简单的 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 都可以。
将 -u
传递给 python
以获取 unbuffered stdout 并遍历您的 stdout
以获取每一行:
stdin, stdout, stderr = ssh.exec_command('python -u /home/user/test.py')
for line in stdout:
print line.rstrip()