Wie kann ich die Ausgabe von LFTP erfassen? (Ausgabe nicht in STDOUT oder STDERR geschrieben?)

9

Ich möchte Zugriff auf Fortschrittsinformationen von lftp erhalten. Derzeit verwende ich Curl wie folgt:

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

Dadurch werden die Fortschrittsinformationen von curl in die Datei download.log geschrieben, die ich verfolgen kann, um den Fortschritt in Echtzeit zu erhalten.

Der gleiche Ansatz funktioniert jedoch nicht mit lftp, weder mit stdout noch mit stderr. Am Ende habe ich eine leere Datei download.log, bis die Übertragung abgeschlossen ist.

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

Wenn ich die Ausgabe nicht umleiten kann, wird der Fortschritt auf dem Bildschirm angezeigt. Wenn ich die Ausgabe umleiten möchte, wird der Fortschritt auf dem Bildschirm nicht mehr angezeigt, aber in download.log wird nichts angezeigt. Nachdem die Dateiübertragung abgeschlossen ist, sehe ich das Endergebnis wie folgt - aber nichts vorher:

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

Tut lftp mit seiner Ausgabe etwas Ungewöhnliches - Drucken auf dem Bildschirm ohne Drucken auf stdout / stderr? Gibt es andere Möglichkeiten zur Erfassung der Bildschirmausgabe als die Umleitung von stdout / stderr?

jondahl
quelle

Antworten:

4

Es klingt für mich so, als würde es seine Ausgabe puffern. Sie können das Unpuffer Expect- Skript ( Manpage ) ausprobieren .

Bis auf weiteres angehalten.
quelle
Danke, machte meinen Tag! Ich habe gerade Unpuffer im Voraus hinzugefügt und es hat funktioniert.
PiTheNumber
3

Die Standardeinstellung "log: file / xfer" finden Sie unter Eingabe des setBefehls in lftp.

Mögliche Ausgabe:

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

Sie können dies natürlich auf verschiedene Arten ändern.

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

Überprüfen Sie die xfer- Domänenvariablen:

setze xfer: log 1

setze xfer: eta-period 5 # alle 5 Sekunden

set xfer: rate-period 20 # durchschnittlicher rate

legt Protokollübertragungsinformationen in ~ / .lftp / transfer_log ab

Sie sind sich nicht sicher, ob Sie das Ziel der Protokolldatei trotzdem ändern können

juj
quelle
Von der Manpage: xfer: Protokolldatei (Pfad zur Datei) Die Datei, in die die Übertragungen protokolliert werden sollen. Die Standardeinstellung ist ~ / .local / share / lftp / transfer_log oder ~ / .lftp / transfer_log.
Benba
Im Tot! Diese neue Einstellung xfer-log wurde in der Version 4.2.0 von Timur Sufiev (03.03.2011)
hinzugefügt
-1

Versuchen Sie, den Fortschritt zu erfassen: lftp sftp: // $ SFTPUSER: $ SFTPPASS @ $ SFTPHOST -e "cd $ DIRECTORY; mget $ SFTPFILE; bye"> $ SFTPLOG 2> & 1

Kevin Michael Beñales
quelle