Назад | Перейти на главную страницу

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

Я хочу получить доступ к информации о прогрессе из 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?

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

См. Настройку по умолчанию "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

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

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

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

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

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

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

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