Linux 다중 호스트는 일괄 적으로 명령을 실행합니다.

  분산 시스템을 배포 할 때 다음과 같은 시나리오가 있습니다. 애플리케이션이 N Linux 호스트에 배포됩니다. 프로젝트를 배포하기 전에 모든 호스트의 JDK 버전 또는 기타 리소스 구성이 기대치를 충족하는지 확인해야합니다. 예를 들면 다음과 같습니다. 모든 시스템의 JDK 버전을 확인하십시오. 동일합니까?
  호스트에 하나씩 로그인 한 다음 "java -version"명령을 사용하여 하나씩 확인하면 작업이 완료 될 수 있지만 효율성이 떨어집니다. 효율성을 높이기 위해 여러 호스트가 스크립트를 통해 일괄 적으로 명령을 실행할 수 있으며 구현 단계는 다음과 같습니다.

하나, Linux 호스트 설정 ssh 암호없는 로그인

  먼저 Linux 호스트는 SSH 암호없이 로그인하도록 설정되어야합니다.이 호스트 중 하나를 신뢰할 수있는 호스트로 사용하여 암호없이 다른 모든 호스트에 로그인 할 수 있습니다. 특정 구성 방법은 " 신뢰 관계 구성을 참조하십시오. 두 Linux 호스트 간 (및 취소 방법) ".

둘째, 호스트 목록 파일 호스트 만들기

  vi hosts 명령은 호스트 목록 파일 호스트를 만들고 파일의 모든 원격 호스트를 나열합니다.

$ vi hosts

$ cat hosts 
47.100.247.242
101.132.242.27
47.103.217.188

셋, doCommand.sh 스크립트 생성

#!/bin/sh

doCommand()
{
    
    
    hosts=`sed -n '/^[^#]/p' hosts`
    for host in $hosts
        do
            echo ""
            echo HOST $host
            ssh $host "$@"
        done
    return 0
}

    if [ $# -lt 1 ]
    then
            echo "$0 cmd"
            exit
    fi
    doCommand "$@"
    echo "return from doCommand"

넷째, 스크립트 파일 doCommand.sh에 실행 권한을 추가합니다.

$ chmod u+x doCommand.sh

5. 신뢰할 수있는 호스트에서 스크립트 명령 실행

  명령을 실행하는 스크립트의 형식은 다음과 같습니다.

./doCommand.sh "[yourcommand]" 

  참고 : [yourcommand] 매개 변수는 신뢰할 수있는 호스트에서 실행할 명령입니다.

  예는 다음과 같습니다.

$ ./doCommand.sh "java -version"

HOST 47.100.247.242
openjdk version "1.8.0_171"
OpenJDK Runtime Environment (build 1.8.0_171-b10)
OpenJDK 64-Bit Server VM (build 25.171-b10, mixed mode)

HOST 101.132.242.27
openjdk version "1.8.0_252"
OpenJDK Runtime Environment (build 1.8.0_252-b09)
OpenJDK 64-Bit Server VM (build 25.252-b09, mixed mode)

HOST 47.103.217.188
openjdk version "1.8.0_232"
OpenJDK Runtime Environment (build 1.8.0_232-b09)
OpenJDK 64-Bit Server VM (build 25.232-b09, mixed mode)
return from doCommand

  이러한 방식으로 스크립트는 각 시스템에서 "java -version"명령을 실행하고 각 호스트의 JDK 버전 정보를 신뢰할 수있는 호스트에 반환합니다.

기사 참조 :

추천

출처blog.csdn.net/piaoranyuji/article/details/109802408