웹사이트 검색

여러 Linux 서버에서 여러 명령을 실행하는 방법


여러 Linux 서버를 관리하고 있고 모든 Linux 서버에서 여러 명령을 실행하고 싶지만 이를 수행하는 방법을 모르는 경우. 걱정할 필요가 없습니다. 이 간단한 서버 관리 가이드에서는 여러 Linux 서버에서 여러 명령을 동시에 실행하는 방법을 보여줍니다.

이를 달성하려면 여러 호스트에서 ssh를 병렬로 실행하기 위한 명령줄 유틸리티인 pssh(병렬 ssh) 프로그램을 사용할 수 있습니다. 이를 사용하면 쉘 스크립트에서 모든 ssh 프로세스에 입력을 보낼 수 있습니다.

요구사항

  1. 여러 원격 Linux 서버에서 명령을 실행하려면 Pssh를 설치하세요.
  2. 모든 원격 서버에 대해 SSH 비밀번호 없는 인증을 사용해야 합니다.

쉘 스크립트 만들기

따라서 다른 서버에서 실행하려는 Linux 명령이 포함된 스크립트를 준비하는 것부터 시작해야 합니다. 이 예에서는 여러 서버에서 다음 정보를 수집하는 스크립트를 작성합니다.

  • 서버 가동 시간 확인
  • 누가 로그인했는지, 무엇을 하고 있는지 확인하세요.
  • 메모리 사용량에 따라 상위 5개 실행 프로세스를 나열합니다.

먼저 선호하는 편집기를 사용하여 commands.sh라는 스크립트를 만듭니다.

vi commands.sh

그런 다음 표시된 대로 스크립트에 다음 명령을 추가합니다.

#!/bin/bash 
###############################################################################
#Script Name    : commands.sh                       
#Description    : execute multiple commands on multiple servers                                                                     
#Author         : Aaron Kili Kisinga       
#Email          : [email  
################################################################################
echo
show system uptime
uptime
echo
show who is logged on and what they are doing
who
echo
show top 5 processe by RAM usage 
ps -eo cmd,pid,ppid,%mem,%cpu --sort=-%mem | head -n 6

exit 0

파일을 저장하고 닫습니다. 그런 다음 표시된 대로 스크립트를 실행 가능하게 만듭니다.

chmod +x commands.sh

PSSH 호스트 파일 생성

그런 다음 명령을 실행하려는 서버 목록을 hosts.txt 파일에 [user@]host[:port] 형식으로 추가하거나 간단히 서버 IP 주소를 제공하십시오.

그러나 원격 액세스를 단순화하기 위해 사용자 정의 SSH 연결을 구성하는 방법에 설명된 대로 .ssh/config 파일에 지정할 수 있는 SSH 별칭을 사용하는 것이 좋습니다.

이 방법은 더 효율적이고 안정적이며 각 원격 서버에 대한 구성 옵션(예: 호스트 이름, 식별 파일, 포트, 사용자 이름 등)을 지정할 수 있습니다.

다음은 샘플 SSH 호스트 별칭 파일, 즉 사용자별 SSH 구성 파일입니다.

vi ~/.ssh/config

다음으로, hosts.txt 파일을 만듭니다. 여기서는 표시된 대로 별칭(.ssh/config 파일에서 Host 키워드를 사용하여 정의된 이름)을 간단히 지정할 수 있습니다.

vi hosts.txt 

서버 별칭을 추가합니다.

server1
server2
server3

여러 Linux 서버에서 스크립트를 통해 명령 실행

이제 여러 원격 서버에서 실행할 여러 명령이 포함된 스크립트와 함께 hosts.txt 파일을 지정하여 다음 pssh 명령을 실행합니다.

pssh -h hosts.txt -P -I<./commands.sh

위 명령에 사용된 플래그의 의미:

  • -h – 호스트 파일을 읽습니다.
  • -P – pssh에 출력이 도착하면 표시하도록 지시합니다.
  • -I – 입력을 읽고 각 SSH 프로세스로 보냅니다.

그게 다야! 이 기사에서는 Linux의 여러 서버에서 여러 명령을 실행하는 방법을 보여주었습니다. 아래 댓글 섹션을 통해 이 주제와 관련된 생각을 공유할 수 있습니다.