Uzak bir master
makineye bir SSH oturumu ve sonra başka bir iç SSH oturumu master
için bazı uzaktan her birine slaves
ve sonra belirli bir dizini silmek ve yeniden oluşturmak için 2 komutları yürütmek gerekiyordu yerel bir makine var.
Yerel makinede master için şifresiz SSH ve master'da slave'lerde şifresiz SSH bulunduğunu unutmayın. Ayrıca tüm ana bilgisayar adları .ssh/config
yerel / ana makinelerde bilinir ve kölelerin ana bilgisayar adları slaves.txt
yerel olarak bulunur ve onları oradan okurum.
Yani yaptığım ve çalıştığım şey şu:
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
Bu küme Amazon EC2'de ve her bir yinelemede önemli bir gecikmeye neden olan 6 SSH oturumu oluşturulduğunu fark ettim. Daha az SSH bağlantısı elde etmek için bu 3 komutu 1'de birleştirmek istiyorum. Bu yüzden ilk 2 komutu birleştirmeye çalıştım
ssh -n $username@$masterHostname "ssh -t -t $username@$line "rm -rf Input Output Partition && mkdir -p EC2_WORKSPACE/$project Input Output Partition""
Ancak beklendiği gibi çalışmaz. İlkini ( rm -rf Input Output Partition
) çalıştırıyor gibi görünüyor ve sonra oturumdan çıkıyor ve devam ediyor. Ne yapabilirim?
-J
atlama ana makinenizi tanımlayacak seçeneği kullanabilirsiniz .