リモートmaster
マシンへのSSHセッションを作成し、次にmaster
から各リモートへの別の内部SSHセッションを作成することになっているローカルマシンがありslaves
、2つのコマンドを実行して、特定のディレクトリを削除して再作成します。
ローカルマシンにはマスターへのパスワードなしのSSHがあり、マスターにはスレーブへのパスワードなしのSSHがあることに注意してください。また、すべてのホスト名は.ssh/config
ローカル/マスターマシンで認識されslaves.txt
ており、スレーブのホスト名はローカルにあり、そこから読み取ります。
だから私がやっていることはこれです:
username="ubuntu"
masterHostname="myMaster"
while read line
do
#Remove previous folders and create new ones.
ssh -n $username@$masterHostname "ssh -t -t $username@$line "rm -rf Input Output Partition""
ssh -n $username@$masterHostname "ssh -t -t $username@$line "mkdir -p EC2_WORKSPACE/$project Input Output Partition""
#Update changed files...
ssh -n $username@$masterHostname "ssh -t -t $username@$line "rsync --delete -avzh /EC2_NFS/$project/* EC2_WORKSPACE/$project""
done < slaves.txt
このクラスターはAmazon EC2上にあり、反復ごとに6つのSSHセッションが作成され、大幅な遅延が発生していることに気付きました。これらの3つのコマンドを1つにまとめて、SSH接続を減らしたいと思います。だから私は最初の2つのコマンドを組み合わせてみました
ssh -n $username@$masterHostname "ssh -t -t $username@$line "rm -rf Input Output Partition && mkdir -p EC2_WORKSPACE/$project Input Output Partition""
しかし、期待どおりに動作しません。最初の実行(rm -rf Input Output Partition
)を実行し、セッションを終了して続行するようです。私に何ができる?
-J
、ジャンプホストを定義するオプションを使用できます。