如何捕获LFTP的输出?(输出未写入STDOUT或STDERR吗?)


9

我想从lftp访问进度信息。目前,我正在像这样使用curl:

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

这会将curl的进度信息写入到download.log文件中,我可以跟踪该文件以获取实时进度。

但是对于lftp,stdout或stderr,该方法均无效。我最终得到一个空的download.log文件,直到传输完成。

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

当我不重定向输出时,我会在屏幕上看到进度。当我重定向输出时,我停止在屏幕上看到进度,但是在download.log中什么都没有显示。文件传输完成后,我会看到最终结果,如下所示-但之前没有任何结果:

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

lftp的输出是否有异常之处-打印到屏幕而不打印到stdout / stderr?除了重定向stdout / stderr之外,还有其他捕获屏幕输出的方法吗?

Answers:



3

通过set在lftp中输入命令,查看“ log:file / xfer”的默认设置。

可能的输出:

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

您可以用不同的方式改变它。

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

2

检查xfer域变量:

设置xfer:log 1

每5秒设置一次xfer:eta-period 5#

设置xfer:rate-period 20#平均速率

会将日志传输信息放入〜/ .lftp / transfer_log

仍然不确定您是否可以更改日志文件目标


从联机帮助页:xfer:log-file(文件路径)进行日志传输的文件。默认值为〜/ .local / share / lftp / transfer_log或〜/ .lftp / transfer_log。

死了!Timur Sufiev(2011-03-03)在版本4.2.0中添加了此新设置xfer-log
juj

-1

试试这个来捕获进度信息:lftp sftp:// $ SFTPUSER:$ SFTPPASS @ $ SFTPHOST -e“ cd $ DIRECTORY; mget $ SFTPFILE; bye”> $ SFTPLOG 2>&1

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.