ฉันมีเครื่องท้องถิ่นซึ่งควรจะทำเซสชั่น SSH ไปยังmaster
เครื่องระยะไกลและจากนั้นอีกเซสชั่น SSH ภายในจากmaster
ไปยังแต่ละระยะไกลบางส่วน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
ตัวเลือกที่จะกำหนดโฮสต์กระโดดของคุณ