Linuxでsshpassとscpを使用して進行状況を表示するにはどうすればよいですか?


9

私のLinuxターミナルでは、このコマンドを使用しています

sshpass -p "pass" scp -r me8@host.ca:/cmshome/me/file /home/me/Desktop

パスワードが含まれているファイルをダウンロードします。sshpassがないと、ダウンロードの進行状況を確認できますが、これを使用すると、完了するまで空白のままになり、確認できません。

sshpassで確認する方法はありますか?

回答:


4

あなたの質問は簡単には実行できないと思います。基本的なbashスクリプトでは不可能かもしれません。

したがって、以下は実際の質問には答えませんが、問題に対する別のアプローチを提供します。

を使用する代わりにsshpassscpパスワードなしの公開鍵認証でプレーンコマンドを使用できます。それが何かわからない場合は、[1]を参照してください。

ローカルで使用するためスクリプトで scpを使用する場合、これはIMOの方法です。

  • パスワードなしで公開鍵を生成する
  • ssh-copy-id公開鍵をサーバーに追加するために使用します

これで、プロンプトなしでコマンドを実行できるようになりました。

scp -r me8@host.ca:/cmshome/me/file /home/me/Desktop

以下のために配布することをスクリプト、明確なパスワードを使用してsshpassは確かに良いアイデアではありません、あなたは少なくともsshpassの「-e」フラグを使用して、ユーザーがより良いセキュリティのための環境変数としてパスワードを提供させてください。

その場合、公開鍵アプローチは少し不便ですが、それでも可能です。スクリプトのユーザーに公開キーの作成を依頼する余裕がない場合は、公開キーをその場で作成し、サーバーにコピーして、scpプロンプトなしで実行できます。

 #!/bin/bash
 KEY="$HOME/.ssh/id_rsa_example"
 if [ ! -e "$KEY" ]; then
     ssh-keygen -t rsa -N "" -f "$KEY"
     sshpass -e ssh-copy-id -i "${KEY}.pub" me8@host.ca
 fi
 scp -r me8@host.ca:/cmshome/me/file /home/me/Desktop

最後にrsync、代わりにプログレスバーを作成するために使用する可能性があります:

$ rsync -P --rsh="sshpass -p $PASSWORD ssh -l me8" host.ca:/cmshome/me/file /home/me/Desktop

[1] https://help.ubuntu.com/community/SSH/OpenSSH/Keys

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.