使用 sshpass 和 SCP 时在 whiptail 中显示进度

使用 sshpass 和 SCP 时在 whiptail 中显示进度

我正在编写一个 bash 脚本,用于自动构建、复制和运行 golang 应用程序到远程服务器。我用它whiptail来让用户选择一些选项,输入一些详细信息(例如 SSH 服务器名称、用户名和密码)。

当我使用时,sshpass -p mypassword scp myfile user@remoteserver:/location/to/myfile我没有得到任何进展,终端只是停留在那里,直到它被复制,然后继续。显然我不能把它传递给whiptail的gauge选项。当我运行它时,没有sshpass,我在屏幕上得到进度信息,但我宁愿使用sshpass(更不用说当scp要求输入密码时,它会破坏whiptail的对话框)。使用-v运行scp会给出大量的调试信息,但我无法清理并输入到whiptail中

那么,当文件通过 SSH 复制时,我该如何向用户显示进度条呢?

答案1

我不熟悉 sshpass。但是 scp 使用 -3 选项有一个进度条。

 $ls -l
-rw-r--r-- 1 root     root     50043369 Jul 17 21:59 gv.tgz

j0h@M0h:~$ scp -3 -P 7935 gv.tgz  [email protected]:/home/j0h/
[email protected]'s password: 
gv.tgz                       100%   48MB  11.9MB/s   00:04 

在上传过程中,最后一行一直在变化,表示进度从 0% 到 100%。这是您可以使用的东西吗?

相关内容