하나의 서버에서 다수의 원격지 서버에 명령어를 전달하는 방법을 알아보자.
(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