다수의 원격 서버 상태 확인

다수의 원격 서버 상태 확인

sudo 액세스 권한이 있는 사용자를 사용하여 800개의 서버(1, 2, 3 순서)에 원격으로 연결해야 합니다.

  1. 시스템 로그 상태 확인

    • 실행 중인 경우 2단계로 이동합니다.
    • d 서비스가 다시 시작되지 않는 경우
  2. /etc/sudoers원격 컴퓨터에 들어가세요

    • 좋다sudo echo "ABC" >> /etc/sudoers
  3. 스크립트에서 완료된 작업을 로컬 컴퓨터(스크립트를 실행 중인 곳)의 로컬 파일에 기록합니다.

원격으로 서비스를 시작하는 스크립트를 만들었습니다.

for i in `cat test1`

do 
{
echo "********************************************$i***************************************************"
sshpass -p '<password>' ssh -t abc@$i "sudo /etc/init.d/httpd start
}
done

참고: 연결할 서버는 test1파일 에 있습니다.

위 3가지를 하나의 스크립트로 통합하는 방법을 알려주세요.

답변1

800개의 서버는 관리할 것이 많습니다. 다른 솔루션을 살펴보는 것을 고려해야 합니다.

  • 소금각 관리 시스템에서 마스터 서버와 미니언 프로세스를 사용합니다.
  • 안시푸르이는 소금과 비슷합니다.
  • 인형 다른 관리 소프트웨어
  • 배포에 따라 원하는 모든 변경 사항이 deb포함된 패키지로 작업한 다음 이를 리포지토리와 함께 배포할 수 있습니다.RPM
  • 비슷한 데몬감시 장치또는v 실행시스템을 모니터링하고 syslogd 서비스가 실행 중인지 확인할 수 있습니다.

사이드 노트: 직접 편집은 /etc/sudoers더 이상 모범 사례가 아닙니다. 대신 사용자 정의 파일을 배치하는 것을 고려 /etc/sudoers.d/ 하고 다음을 /etc/sudoers포함 해야 합니다.includedir /etc/sudoers.d

답변2

사용 중인 명령이 일반 쉘 명령에서 예상하는 올바른 반환 값을 구현하는 경우에만 다음과 같이 사용할 수 있습니다.

sshpass -p '<password>' ssh -t abc@$i "command to check syslog || command to restart service && command to add sudo entry" && local command

아이디어는 각 단계에서 올바른 반환 값에 의존한다는 것입니다. command to check syslog실패 하면 실행하고 command to restart service, 성공하면 실행합니다 command to add sudo entry.

ssh 명령은 마지막 명령 실행의 값을 반환해야 하며, 괜찮으면 실행합니다 local command.

물론 이것은 매우 조잡한 작업이므로 이러한 명령을 별도의 ssh 명령으로 분할하고 $?매번 반환 값을 확인하여 문제를 터미널이나 로그 파일에 반영할 수 있다면 더 안정적일 것입니다.

답변3

필요한 모든 것을 포함하는 스크립트를 작성한 다음 SSH를 사용하여 원격 서버에서 실행하십시오.

인용하다

ssh root@MachineB 'bash -s' < local_script.sh

스크립트는 로컬 스크립트처럼 실행됩니다.기계 B

관련 정보