Como capturar a saída do LFTP? (Saída não gravada em STDOUT ou STDERR?)

9

Eu gostaria de ter acesso a informações de progresso do lftp. Atualmente, estou usando o curl assim:

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

Isso grava as informações de progresso do curl no arquivo download.log, que eu posso personalizar para obter progresso em tempo real.

Mas a mesma abordagem não funciona com o lftp, com stdout ou stderr. Acabo com um arquivo download.log vazio, até a transferência ser concluída.

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

Quando não redireciono a saída, vejo progresso na tela. Quando redireciono a saída, paro de ver progresso na tela, mas nada aparece no download.log. Após a transferência do arquivo, vejo o resultado final, assim - mas nada antes:

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

O lftp está fazendo algo incomum com a saída - imprimir na tela sem imprimir no stdout / stderr? Existem outras maneiras de capturar a saída da tela além de redirecionar stdout / stderr?

jondahl
fonte

Respostas:

4

Parece-me que está protegendo sua saída. Você pode tentar o script de expectativa do buffer ( página de manual ).

Pausado até novo aviso.
fonte
Obrigado, fez o meu dia! Acabei de adicionar o buffer na frente e funcionou.
PiTheNumber 5/07/19
3

Veja a configuração padrão "log: file / xfer" digitando o setcomando no lftp.

Saída possível:

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

Você pode alterar isso de diferentes maneiras fora do curso.

lftp -c 'open -e "set log:file/xfer /home/USERNAME/myown.log; mget *.csv; bye" -u uname,psswd 172.16.100.101' >> $log
Gabe
fonte
2

Verifique as variáveis ​​de domínio xfer :

definir xfer: log 1

set xfer: eta-period 5 # a cada 5 segundos

definir xfer: taxa-período 20 # taxa média

colocará as informações de transferência de log em ~ / .lftp / transfer_log

Não tenho certeza se você pode alterar o destino do arquivo de log.

juj
fonte
da página de manual: xfer: log-file (caminho para arquivo) o arquivo para o qual o log transfere. O padrão é ~ / .local / share / lftp / transfer_log ou ~ / .lftp / transfer_log.
Benba
Na morte! Esta nova configuração xfer-log foi adicionada na versão 4.2.0 por Timur Sufiev (03-03-2011)
jul
-1

tente isto para capturar informações de progresso: lftp sftp: // $ SFTPUSER: $ SFTPPASS @ $ SFTPHOST -e "cd $ DIRECTORY; mget $ SFTPFILE; bye"> $ SFTPLOG 2> & 1

Kevin Michael Beñales
fonte