0

forループで2行繰り返す必要があります

ssh tam@192.168.174.43 mkdir -p $location
scp -r $i tam@192.168.174.43:$location

しかし、パスワードを入力する必要があるたびに、コードを変更してから1回以上入力するだけで済む方法はありますか?

4

2 に答える 2

1

ssh-keygen( https://help.ubuntu.com/community/SSH/OpenSSH/Keys )を使用して公開/秘密鍵を生成する方法を使用してから、以下のスクリプトを使用できます。

for VARIABLE in dir1 dir2 dir3
do
ssh tam@192.168.174.43 mkdir -p $location
scp -r $i tam@192.168.174.43:$location
done 

代替ソリューション:sshpassを使用できます

for VARIABLE in dir1 dir2 dir3
do
ssh tam@192.168.174.43 mkdir -p $location sshpass -p '<password>' <command>
scp -r $i tam@192.168.174.43:$location sshpass -p '<password>' <command>
done
于 2013-02-05T10:01:28.623 に答える
0

公開鍵/秘密鍵が最も簡単なオプションですが、既存のスクリプトを変更する必要はありませんsshfs。. sshfs はデフォルトではインストールされない場合があります。

このアプローチでは、基本的mountにリモート ファイル システムを ssh プロトコル経由でローカル ディレクトリに転送します。次に、 mkdir / cp などのコマンドを使用するだけです。

:これらのコマンドは、リモートシステムからではなく、あなたのシステムからのものです。

ssh 経由のマウントは 1 回限りのジョブであり、手動での介入が必要になります。スクリプトを実行する前にこれを行います。
たとえば、あなたの場合:

mkdir /tmp/tam_192.168.174.43
sshfs tam@192.168.174.43:/ /tmp/tam_192.168.174.43
tam@192.168.174.43's password: <ENTER PASSWORD HERE>

そして、スクリプトで次のような簡単なコマンドを使用します。

mkdir -p /tmp/tam_192.168.174.43/$location
cp -r $i /tmp/tam_192.168.174.43/$location

アンマウントするには:

fusermount -u /tmp/tam_192.168.174.43
于 2013-02-05T13:22:19.787 に答える