wget
вывода информации о производительности в stderr, чтобы вы писали line_buffered(err)
.
Или вы можете использовать exec_command("wget xyz", get_pty=True)
комбинацию stdout и stderr .
Я пытаюсь загрузить файл на всем компьютере, и поэтому я создал скрипт python. Он использует модульparamiko
просто фрагмент кода:
from paramiko import SSHClient, AutoAddPolicy
ssh = SSHClient()
ssh.load_system_host_keys()
ssh.set_missing_host_key_policy(AutoAddPolicy())
ssh.connect(args.ip,username=args.username,password=args.password)
stdin, stdout, stderr = ssh.exec_command("wget xyz")
print(stdout.read())
Выход будет распечатан после завершения загрузки.!
Есть ли способ распечатать выходные данные в реальном времени?
Изменить: я посмотрел на этот ответ и применил что-то вроде этого:
def line_buffered(f):
line_buf = ""
print "start"
print f.channel.exit_status_ready()
while not f.channel.exit_status_ready():
print("ok")
line_buf += f.read(size=1)
if line_buf.endswith('
'):
yield line_buf
line_buf = ''
in, out, err = ssh.exec_command("wget xyz")
for l in line_buffered(out):
print l
Но, это не печать данных в реальном времени.! Он ожидает, что файл будет загружен, а затем распечатает весь статус загрузки.
Кроме того, я пробовал эту команду: echo one && sleep 5 && echo two && sleep 5 && echo three
и выход в режиме реального времени с line_buffered
функцией. Но, для wget
команды, он не работает.