当前位置:  开发笔记 > 编程语言 > 正文

如何最好地捕获和记录scp输出?

如何解决《如何最好地捕获和记录scp输出?》经验,为你挑选了2个好方法。

我试图从安装脚本(使用scp)捕获输出并记录它.但是,我没有得到scp正在打印的所有内容,即进度条.

屏幕输出:

将/ user2/cdb/builds/tmp/uat/myfiles/*复制到server/users/myfiles as cdb

cdb @ server的密码:myfile 100%|*****************************| 2503 00:00

日志输出:

将/ user2/cdb/builds/tmp/uat/myfiles/*复制到server/users/myfiles as cdb

我真的很想知道我的文件到了那里.这是我现在尝试的无济于事:

myscript.sh 2>&1 | tee mylogfile.log

有没有人有一个很好的方法来捕获scp输出并记录它?

谢谢.



1> Martin..:

scp使用控制代码将其进度条打印到终端.它将检测您是否重定向输出,从而省略进度条.

你可以通过欺骗scp认为它在终端中运行使用"脚本"命令来解决这个问题,该命令默认安装在大多数发行版上:

script -q -c "scp server:/file /tmp/" > /tmp/test.txt

test.txt的内容将是:

file    0%    0     0.0KB/s   --:-- ETA
file   18%   11MB  11.2MB/s   00:04 ETA
file   36%   22MB  11.2MB/s   00:03 ETA
file   54%   34MB  11.2MB/s   00:02 ETA
file   73%   45MB  11.2MB/s   00:01 ETA
file   91%   56MB  11.2MB/s   00:00 ETA
file  100%   61MB  10.2MB/s   00:06

......这可能是你想要的.

我在将交互式脚本的输出重定向到日志文件时偶然发现了这个问题.在日志中没有结果不是问题,因为您始终可以评估退出代码.但我真的希望交互式用户看到进度条.这个答案解决了这两个问题.



2> Tarski..:

看起来你只是想知道scp是否在日志中成功.

我猜测滚动条不会打印到stdout并使用ncurses或其他类型的TUI?

您可以查看scp的返回值以查看它是否成功.喜欢

scp myfile user@host.com:. && echo success!

man scp

scp exits with 0 on success or >0 if an error occurred.

推荐阅读
李桂平2402851397
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有