我正在编写一个 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%。这是您可以使用的东西吗?