카테고리 없음

pdsh - host서버에서 원격지 서버에 동시 명령 내리기 (centos)

sogkyc 2020. 9. 29. 17:55

하나의 서버에서 다수의 원격지 서버에 명령어를 전달하는 방법을 알아보자.

(CentOS7.5 버전 기준임)

 

 

호스트, 원격지서버 공통 작업

root 비밀번호 통일

 

 

pdsh 관련 패키지 설치

(호스트서버) 

$ yum install pdsh-2.31-1.el7.x86_64.rpm  pdsh-mod-dshgroup-2.31-1.el7.x86_64.rpm pdsh-rcmd-ssh-2.31-1.el7.x86_64.rpm sshpass-1.06-1.el7.x86_64.rpm

(원격지서버)

$ yum install pdsh-mod-dshgroup-2.31-1.el7.x86_64.rpm

 

sshpass와 ssh-copy-id 조합

(호스트서버)

- 퍼블릭키 생성
$ ssh-keygen -t rsa

 

- 원격지 서비 리스트 작성 (pdsh "-g" 플래그 사용시 특정 그룹 대상명령어 실행 가능한데 /etc/dsh/group/ 밑의 파일을 읽어서 그룹으로 인식 한다.)

$ vi /etc/dsh/group/node

10.10.10.1 node1

10.10.10.2 node2

...

 

위에 작성한 노드 대상 passwordless접속을 위한 스크립트

$ vi /etc/dsh/group/script.sh 

#!/bin/bash

Usage() {
 echo -e "\n Usage : setup_ssh [group_list] \n"
}


## Null check
if [ "$1" == "" ]; then
  Usage
  exit 1
elif [ -f $1 ]; then
  echo -e "\n start setup\n"
else
  echo "file not exist : $1"
fi


## SSH setup
cat $1 |while read line
do
  sshpass -p <pw123!> ssh-copy-id -o StrictHostKeyChecking=no root@${line}    # p/w수정 필요
done


echo -e "\n finish setup \n"

 

pdsh 명령어 실행 

그룹 단위

$ pdsh -g node pwd 

단일 및 특정 노드 단위

$ pdsh -w node1 pwd

$ pdsh -w node[1-3] pwd