Comment capturer la sortie de LFTP? (Sortie non écrite dans STDOUT ou STDERR?)

9

J'aimerais avoir accès aux informations de progression de lftp. Actuellement, j'utilise curl comme ceci:

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

Cela écrit les informations de progression de curl dans le fichier download.log, que je peux suivre pour obtenir une progression en temps réel.

Mais la même approche ne fonctionne pas avec lftp, que ce soit avec stdout ou stderr. Je me retrouve avec un fichier download.log vide, jusqu'à ce que le transfert soit terminé.

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

Lorsque je ne redirige pas la sortie, je vois des progrès à l'écran. Lorsque je redirige la sortie, j'arrête de voir la progression à l'écran, mais rien n'apparaît dans download.log. Une fois le transfert de fichiers terminé, je vois le résultat final, comme ceci - mais rien avant:

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

Est-ce que lftp fait quelque chose d'inhabituel avec sa sortie - imprimer sur écran sans imprimer sur stdout / stderr? Existe-t-il d'autres moyens de capturer la sortie d'écran que de rediriger stdout / stderr?

jondahl
la source

Réponses:

4

Il me semble qu'il tamponne sa sortie. Vous pouvez essayer le script unbuffer expect ( page de manuel ).

En pause jusqu'à nouvel ordre.
la source
Merci, j'ai fait ma journée! J'ai juste ajouté un tampon sans tampon et cela a fonctionné.
PiTheNumber
3

Voir le paramètre par défaut "log: file / xfer" en entrant la setcommande dans lftp.

Sortie possible:

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

Vous pouvez changer cela de différentes manières.

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

Vérifiez les variables du domaine xfer :

set xfer: log 1

set xfer: eta-period 5 # toutes les 5 secondes

set xfer: rate-period 20 # taux moyen

placera les informations de transfert de journal dans ~ / .lftp / transfer_log

Vous n'êtes pas sûr de pouvoir néanmoins modifier la destination du fichier journal

juj
la source
à partir de la page de manuel: xfer: log-file (chemin d'accès au fichier) vers lequel transférer les transferts. La valeur par défaut est ~ / .local / share / lftp / transfer_log ou ~ / .lftp / transfer_log.
benba
Indead! Ce nouveau paramètre xfer-log a été ajouté dans la version 4.2.0 par Timur Sufiev (2011-03-03)
juj
-1

essayez de capturer les informations de progression: lftp sftp: // $ SFTPUSER: $ SFTPPASS @ $ SFTPHOST -e "cd $ DIRECTORY; mget $ SFTPFILE; bye"> $ SFTPLOG 2> & 1

Kevin Michael Beñales
la source