N개 서버 간 SSH

N개 서버 간 SSH

c0001.test.cloud.com, c0002.test.cloud.com와 같은 n개의 서버가 있고 c0003.test.cloud.com다음과 같이 이러한 서버 간에 ssh를 수행하고 싶습니다. 서버: c0001에서 ssh를 c0002로 수행한 다음 서버를 종료합니다. c0001로 돌아와서 c0003으로 ssh를 수행한 다음 서버를 종료합니다.

따라서 이런 방식으로 런타임 중에 입력을 입력하지 않고 스크립트를 실행하며 n개의 서버를 가질 수 있습니다. 나는 하나의 스크립트를 작성했습니다.

str1=c0001.test.cloud.com,c0002.test.cloud.com,c0003.test.cloud.com
string="$( cut -d ',' -f 2- <<< "$str1" )"
echo "$string"
for j in $(echo $string | sed "s/,/ /g") do ssh appAccount@j done

하지만 이 스크립트는 제대로 실행되지 않습니다. -o StrictHostKeyChecking=no또한 다음과 같은 매개변수를 전달하여 확인했지만 <<'ENDSSH'작동하지 않습니다. 그렇다면 스크립팅을 사용하여 여러 서버 간에 ssh를 어떻게 달성할 수 있습니까?

답변1

  1. 쉘 변수로 사용하고 있다고 말하고 있습니다 . 하지만 이는 해당 변수를 , 예를 들어 로 참조해야 함을 의미합니다 .for j in …(values)… do ssh appAccount@j donej$jssh "appAccount@$j"
  2. 세미콜론(;) 또는 ssh "appAccount@$j"및 사이에 개행 문자가 있습니다 done.

다른 문제도 있습니다. 예를 들어 모든 쉘 변수 참조를 인용해야 하지만 위의 내용을 참조하면 시작됩니다.

관련 정보