Saya memiliki mesin lokal yang seharusnya membuat sesi SSH ke mastermesin jarak jauh dan kemudian sesi SSH dalam lainnya dari masterke 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/configmesin lokal / master dan nama host para budak ada di slaves.txtlokal 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?
-Jopsi yang akan menentukan host melompat Anda.