분산 시스템을 배포 할 때 다음과 같은 시나리오가 있습니다. 애플리케이션이 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 버전 정보를 신뢰할 수있는 호스트에 반환합니다.
기사 참조 :