
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
- 쉘 변수로 사용하고 있다고 말하고 있습니다 . 하지만 이는 해당 변수를 , 예를 들어 로 참조해야 함을 의미합니다 .
for j in …(values)… do ssh appAccount@j done
j
$j
ssh "appAccount@$j"
- 세미콜론(
;
) 또는ssh "appAccount@$j"
및 사이에 개행 문자가 있습니다done
.
다른 문제도 있습니다. 예를 들어 모든 쉘 변수 참조를 인용해야 하지만 위의 내용을 참조하면 시작됩니다.