Net::SSH `wget` индикатор выполнения

Я пытаюсь передать стандартный вывод wget используя net::ssh. Даже при том, что у меня это настроено как это:

ssh.exec! cmd do |ch, stream, data|
  print data
end

Я получаю вывод, как это:

  0K .......... .......... .......... .......... ..........  1% 18.8M 0s
 50K .......... .......... .......... .......... ..........  3% 23.7M 0s
100K .......... .......... .......... .......... ..........  4% 22.7M 0s
150K .......... .......... .......... .......... ..........  6% 23.8M 0s

Когда я ожидаю, что все будет напечатано в одной строке с индикатором выполнения термометра. Что я делаю неправильно?

РЕДАКТИРОВАТЬ

Это может на самом деле иметь большее отношение к удаленному процессу (в этом случае wget) чем мои настройки. При локальном запуске я получаю вывод, который выглядит следующим образом:

100%[============================>] 3,208,462   7.65M/s   in 0.4s

Что сильно отличается от того, что я получаю через SSH.

1 ответ

Решение

В этом случае это выглядит как wget виновник, а не возврат кареты, который я подозревал.

Есть два режима вывода прогресса bar а также dot, Бар по умолчанию, если на выходе tty (что есть у меня на месте) но dot по умолчанию в нет-tty сессиях (это то, что у меня есть через ssh). dot Индикатор выполнения не имеет возврата каретки. Это объясняет, почему я их не вижу.

Добавление опции --progress=bar:force к wget звонок работает как положено, возврат каретки и все.

Я оставлю это здесь и переименую вопрос немного на тот случай, если кто-нибудь столкнется с этой проблемой.

Другие вопросы по тегам