일부 Ubuntu 12.04(Precise Pangolin) 서버를 자주 업데이트해야 합니다(랙 공간).
내가 지금 하고 있는 일은:
- SCP를 사용하여 서버에 파일 복사
- SSH를 사용하여 서버에 로그인
- 바람둥이 중지
- 업로드된 파일의 일부 복사본을 만들고 이동합니다.
- 톰캣 시작
두 번째 서버(현재 12개 서버, 계속 증가 중)에서 동일한 파일을 사용하여 동일한 프로세스를 반복합니다.
서버 목록을 반복하면서 이 모든 작업을 수행하는 스크립트를 작성하는 것이 가능합니까?
어떻게 해야 하나요? 바람직하게는 이 솔루션에는 아무것도 설치할 필요가 없습니다. 회사의 대부분의 사람들은 MacBook에서 작업하지만 Windows 가상 머신도 많습니다.
이상적으로는 단순히 업데이트할 서버를 추가/제거하여 서버 목록을 변경하는 것입니다. 그러나 동일한 작업을 12번 수행하는 시간을 절약해 주는 솔루션은 매우 감사합니다. :)
답변1
이에 대한 해결 방법은 여러 가지가 있습니다. 단계를 수동으로 제어하고 동시에 실행하시겠습니까? 보세요컴퓨터 보안 게이트웨이(Linux 시스템에서 오는 경우) 또는슈퍼 퍼티(Windows 시스템에서 오는 경우) 모든 것을 자동화하고 싶다면 확인해 보세요.예상되는.
답변2
@데이브
스크립트에 따르면 SSH를 통해 실행할 수 있습니다.
for server in s1 s2 s3; do
ssh $server "command one; command two; ..."
done
또는 여러 호출로 분할합니다.
for server in s1 s2 s3; do
ssh $server command one
ssh $server command two
...
done
그냥 지나가면서 답변에 이것을 추가해 보세요..
답변3
자신에게 호의를 베풀고 확인해보십시오.안시푸르. 이것이 바로 당신에게 필요한 것 같습니다. SSH를 사용하고 쉽게 확장되므로 필요에 따라 목록에 서버를 추가하기만 하면 됩니다. 시나리오를 만드는 방법을 배우려면 오후 시간이 걸리지만 앞으로는 셀 수 없이 많은 시간을 절약할 수 있습니다.
답변4
다른 사람들이 언급했듯이 여러 시스템을 관리하기 위해 설계된 도구가 있지만 순수한 bash 솔루션의 경우 for 루프를 작성하고 ssh를 통해 몇 개의 노드에서 명령을 실행할 수 있습니다.
호스트1과 호스트2가 이 작업을 수행하려는 ndo의 호스트 이름이라고 가정합니다.
for node in host1 host2; do
scp /tmp/script.sh user@$node:/tmp/script.sh
if [[ "$?" == "0" ]];then #checks that last command didn't return an error
ssh -oBatchMode=yes user@$node /tmp/script.sh
fi
done
이 솔루션을 사용할 계획이라면 매번 비밀번호를 입력할 필요가 없도록 SSH 키를 구성하는 것이 좋습니다. BatchMode 옵션을 사용하면 입력을 기다리는 대신 스크립트를 건너뛰게 되며 이것이 바람직한지 여부를 결정할 수 있습니다.