Tôi có một máy cục bộ có nhiệm vụ tạo một phiên SSH cho một master
máy từ xa và sau đó là một phiên SSH bên trong từ một master
đến một số điều khiển từ xa slaves
, sau đó thực hiện 2 lệnh tức là xóa một thư mục cụ thể và tạo lại nó.
Lưu ý rằng máy cục bộ có SSH không mật khẩu cho chủ và chủ có SSH không mật khẩu cho nô lệ. Ngoài ra tất cả các tên máy chủ được biết đến trong .ssh/config
các máy cục bộ / máy chủ và tên máy chủ của nô lệ ở slaves.txt
địa phương và tôi đọc chúng từ đó.
Vì vậy, những gì tôi làm và làm việc là thế này:
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
Cụm này nằm trên Amazon EC2 và tôi đã nhận thấy rằng có 6 phiên SSH được tạo tại mỗi lần lặp lại gây ra độ trễ đáng kể. Tôi muốn kết hợp 3 lệnh này thành 1 để có ít kết nối SSH hơn. Vì vậy, tôi đã cố gắng kết hợp 2 lệnh đầu tiên thành
ssh -n $username@$masterHostname "ssh -t -t $username@$line "rm -rf Input Output Partition && mkdir -p EC2_WORKSPACE/$project Input Output Partition""
Nhưng nó không hoạt động như mong đợi. Nó dường như thực thi cái đầu tiên ( rm -rf Input Output Partition
) và sau đó thoát khỏi phiên và tiếp tục. Tôi có thể làm gì?
-J
tùy chọn xác định máy chủ nhảy của mình.