¿Cómo puedo capturar la salida de LFTP? (¿Salida no escrita en STDOUT o STDERR?)

9

Me gustaría tener acceso a la información de progreso de lftp. Actualmente, estoy usando curl así:

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

Esto escribe la información de progreso de curl en el archivo download.log, que puedo seguir para obtener progreso en tiempo real.

Pero el mismo enfoque no funciona con lftp, ya sea con stdout o stderr. Termino con un archivo download.log vacío, hasta que se completa la transferencia.

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

Cuando no redirijo la salida, veo progreso en la pantalla. Cuando redirijo la salida, dejo de ver el progreso en la pantalla, pero no aparece nada en download.log. Una vez completada la transferencia del archivo, veo el resultado final, como este, pero nada antes:

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

¿Está haciendo lftp algo inusual con su salida: imprimir en pantalla sin imprimir en stdout / stderr? ¿Hay otras formas de capturar la salida de pantalla que redirigir stdout / stderr?

jondahl
fuente

Respuestas:

4

Me parece que está amortiguando su salida. Puede probar el script de espera de unbuffer ( página de manual ).

Pausado hasta nuevo aviso.
fuente
Gracias, me alegraron el día! Acabo de agregar unbuffer delante y funcionó.
PiTheNumber
3

Consulte la configuración predeterminada "log: file / xfer" ingresando el setcomando en lftp.

Salida posible:

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

Puede cambiar esto de diferentes maneras fuera de 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
fuente
2

Verifique las variables de dominio xfer :

establecer xfer: log 1

establecer xfer: eta-period 5 # cada 5 segundos

establecer xfer: tasa promedio 20 # tasa promedio

pondrá la información de transferencia de registro en ~ / .lftp / transfer_log

Sin embargo, no estoy seguro de poder cambiar el destino del archivo de registro

juj
fuente
desde la página de manual: xfer: archivo de registro (ruta al archivo) al archivo para registrar las transferencias. El valor predeterminado es ~ / .local / share / lftp / transfer_log o ~ / .lftp / transfer_log.
benba
Indead! Este nuevo ajuste xfer-log fue agregado en la versión 4.2.0 por Timur Sufiev (03-03-2011)
juj
-1

intente esto para capturar información de progreso: lftp sftp: // $ SFTPUSER: $ SFTPPASS @ $ SFTPHOST -e "cd $ DIRECTORY; mget $ SFTPFILE; bye"> $ SFTPLOG 2> & 1

Kevin Michael Beñales
fuente