Bagaimana saya bisa menangkap output dari LFTP? (Output tidak ditulis ke STDOUT atau STDERR?)

9

Saya ingin mendapatkan akses ke informasi kemajuan dari lftp. Saat ini, saya menggunakan ikal seperti:

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

Ini menulis informasi perkembangan curl ke file download.log, yang dapat saya ikuti untuk mendapatkan kemajuan waktu nyata.

Tetapi pendekatan yang sama tidak bekerja dengan lftp, baik dengan stdout atau stderr. Saya berakhir dengan file download.log yang kosong, sampai transfer selesai.

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

Ketika saya tidak mengarahkan output, saya melihat kemajuan di layar. Ketika saya melakukan redirect output, saya berhenti melihat kemajuan di layar, tetapi tidak ada yang muncul di download.log. Setelah transfer file selesai, saya melihat hasil akhirnya, seperti ini - tetapi tidak ada yang sebelumnya:

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

Apakah lftp melakukan sesuatu yang tidak biasa dengan outputnya - mencetak ke layar tanpa mencetak ke stdout / stderr? Apakah ada cara lain untuk menangkap keluaran layar selain mengarahkan ulang stdout / stderr?

jondahl
sumber

Jawaban:

4

Bagi saya sepertinya buffering output-nya. Anda dapat mencoba skrip harapan unbuffer ( halaman manual ).

Dijeda sampai pemberitahuan lebih lanjut.
sumber
Terima kasih, buat hariku! Saya baru saja menambahkan unbuffer infront dan berhasil.
PiTheNumber
3

Lihat pengaturan default "log: file / xfer" dengan memasukkan setperintah di lftp.

Output yang mungkin:

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

Anda dapat mengubahnya dengan cara yang berbeda tentunya.

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

Periksa variabel domain xfer :

set xfer: log 1

set xfer: eta-period 5 # setiap 5 detik

set xfer: rate-period 20 # rata-rata rate

akan memasukkan informasi transfer log ke ~ / .lftp / transfer_log

Namun, Anda tidak dapat mengubah tujuan file log

juj
sumber
dari halaman manual: xfer: log-file (path to file) file ke log transfer ke. Standarnya adalah ~ / .local / share / lftp / transfer_log atau ~ / .lftp / transfer_log.
benba
Indead! Pengaturan baru ini xfer-log ditambahkan dalam versi 4.2.0 oleh Timur Sufiev (2011-03-03)
juj
-1

coba ini untuk menangkap info kemajuan: lftp sftp: // $ SFTPUSER: $ SFTPPASS @ $ SFTPHOST -e "cd $ DIRECTORY; mget $ SFTPFILE; bye"> $ SFTPLOG 2> & 1

Kevin Michael Beñales
sumber