Saya memiliki mesin lokal yang seharusnya membuat sesi SSH ke master
mesin jarak jauh dan kemudian sesi SSH dalam lainnya dari master
ke masing-masing beberapa remote slaves
, dan kemudian menjalankan 2 perintah yaitu untuk menghapus direktori tertentu dan membuatnya kembali.
Perhatikan bahwa mesin lokal memiliki SSH tanpa kata sandi untuk master dan master memiliki SSH tanpa kata sandi untuk slave. Juga semua nama host dikenal di .ssh/config
mesin lokal / master dan nama host para budak ada di slaves.txt
lokal dan saya membacanya dari sana.
Jadi yang saya lakukan dan kerjakan adalah ini:
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
Cluster ini ada di Amazon EC2 dan saya perhatikan ada 6 sesi SSH yang dibuat pada setiap iterasi yang menyebabkan penundaan yang signifikan. Saya ingin menggabungkan 3 perintah ini menjadi 1 untuk mendapatkan koneksi SSH yang lebih sedikit. Jadi saya mencoba menggabungkan 2 perintah pertama menjadi
ssh -n $username@$masterHostname "ssh -t -t $username@$line "rm -rf Input Output Partition && mkdir -p EC2_WORKSPACE/$project Input Output Partition""
Tapi itu tidak berfungsi seperti yang diharapkan. Tampaknya mengeksekusi yang pertama ( rm -rf Input Output Partition
) dan kemudian keluar dari sesi dan berlanjut. Apa yang dapat saya?
-J
opsi yang akan menentukan host melompat Anda.