Golangアプリの構築、コピー、およびリモートサーバーへの実行を自動化するbashスクリプトを書いています。 whiptail
を使用して、ユーザーにいくつかのオプションを選択させ、いくつかの詳細(SSHサーバー名、ユーザー名、パスワードなど)を入力させます。
sshpass -p mypassword scp myfile user@remoteserver:/location/to/myfile
を使用すると、何も進行しません。端末は、コピーされるまでそこに座ってから続行します。明らかに、これをホイップテールのゲージオプションに渡すことはできません。 sshpassなしで実行すると、画面に進捗情報が表示されますが、sshpassを使用します(scpがパスワードを要求するときは言うまでもなく、whiptailのダイアログボックスが壊れます)。 -vを指定してscpを実行すると、大量のデバッグ情報が得られますが、クリーンアップしてウィップテールにフィードすることはできません
それでは、SSH経由でファイルがコピーされている間に、ユーザーにプログレスバーを表示するにはどうすればよいでしょうか?
私は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%への進行を示していました。これはあなたが使用できるものですか?