Как я могу захватить вывод из LFTP? (Вывод не записан в STDOUT или STDERR?)

10

Я хотел бы получить доступ к информации о прогрессе от lftp. В настоящее время я использую curl следующим образом:

curl http://example.com/file -o file -L 2> download.log

Это записывает информацию о прогрессе curl в файл download.log, который я могу отслеживать, чтобы получить прогресс в реальном времени.

Но тот же подход не работает с lftp, ни с stdout, ни с stderr. Я заканчиваю с пустым файлом download.log, пока передача не завершена.

lftp -e 'get http://example.com/file;quit' 2> download.log
lftp -e 'get http://example.com/file;quit' 1> download.log

Когда я не перенаправляю вывод, я вижу прогресс на экране. Когда я делаю перенаправление вывода, я перестаю видеть прогресс на экране, но в download.log ничего не отображается. После завершения передачи файла я вижу конечный результат, как этот, но ничего раньше:

97618627 bytes transferred in 104 seconds (913.1K/s)

Делает ли lftp что-то необычное с выводом - печать на экран без печати на stdout / stderr? Есть ли другие способы захвата вывода экрана, кроме перенаправления stdout / stderr?

jondahl
источник

Ответы:

5

Это звучит для меня, как будто он буферизирует свой вывод. Вы можете попробовать сценарий ожидания небуфера ( man-страница ).

Приостановлено до дальнейшего уведомления.
источник
Спасибо, сделал мой день! Я просто добавил unbuffer infront, и это сработало.
PiTheNumber
3

Посмотрите настройки по умолчанию для «log: file / xfer», введя setкоманду в lftp.

Возможный вывод:

set log:file/xfer /home/USERNAME/.local/share/lftp/transfer_log

Вы можете изменить это по-разному, конечно.

lftp -c 'open -e "set log:file/xfer /home/USERNAME/myown.log; mget *.csv; bye" -u uname,psswd 172.16.100.101' >> $log
Гейб
источник
2

Проверьте переменные домена xfer :

установить xfer: log 1

установить xfer: eta-period 5 # каждые 5 секунд

set xfer: rate-period 20 # средняя скорость

поместит информацию о передаче журнала в ~ / .lftp / Transfer_log

Не уверен, что вы можете изменить место назначения файла журнала, тем не менее

юй
источник
из man-страницы: xfer: log-file (путь к файлу) файл для передачи в журнал. По умолчанию используется ~ / .local / share / lftp / Transfer_log или ~ / .lftp / Transfer_log.
Бенба
Indead! Этот новый параметр XFER-журнал был добавлен в версии 4.2.0 Тимур Суфии (2011-03-03)
юй
-1

попробуйте это, чтобы получить информацию о ходе выполнения: lftp sftp: // $ SFTPUSER: $ SFTPPASS @ $ SFTPHOST -e "cd $ DIRECTORY; mget $ SFTPFILE; bye"> $ SFTPLOG 2> & 1

Кевин Майкл Беньалес
источник