forループで2行繰り返す必要があります
ssh tam@192.168.174.43 mkdir -p $location
scp -r $i tam@192.168.174.43:$location
しかし、パスワードを入力する必要があるたびに、コードを変更してから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
公開鍵/秘密鍵が最も簡単なオプションですが、既存のスクリプトを変更する必要はありません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