카테고리 없음

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

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

(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