Linux 여러 대 서버에 ssh 접근 후 shell 파일 실행하기
2019. 2. 22. 11:13ㆍOS/Linux
Linux 여러 대 서버에 ssh 접근 후 shell 파일 실행하기
여러대의 vm 서버에 동시에 명령어를 날려야 하는 경우가 생겼다.
해당 서버들의 ip 를 목록으로 만들고 반복문으로 ssh 를 접근해서 명령어를 실행하면 되지 않을까 싶어 소스를 만들어보았다.
1
2
3
4
5
6
7 |
IP_LIST=("10.10.10.1" "10.10.10.2" "10.10.10.3" "10.10.10.4" "10.10.10.5")
for VALUE in "${IP_LIST[@]}"; do
ssh -p 22 centos@$VALUE <<EOF
sh < /temp.sh
EOF
done |
cs |
1# : 접근해야 하는 IP 목록
3# : IP 목록으로 반복문 실행
4# : 해당 IP로 ssh 접근
5# : 접근 후 sh 파일 실행
아주 심플한 소스를 만들었다.
그런데 조금의 문제가 있다.
위 반복문은 ssh 접근 후 temp.sh 파일의 실행이 끝날때 까지 대기 하고 끝나면 다음 서버에 접근하게 된다.
temp.sh 파일을 실행할 때 백그라운드에서 실행시킬 필요가 있다.
그래서 동시에 반복문을 돌면서 호출을 할 수 있다.
1
2
3
4
5
6
7 |
IP_LIST=("10.10.10.1" "10.10.10.2" "10.10.10.3" "10.10.10.4" "10.10.10.5")
for VALUE in "${IP_LIST[@]}"; do
ssh -p 22 centos@$VALUE <<EOF
nohup sh < /temp.sh >> '/temp.log' &
EOF
done |
cs |
5# 처럼 nohup 명령어를 사용해서 사용자가 로그아웃 되더라도 프로세스가 백그라운드에서 실행하도록 해야 한다.
추가적으로 해당 쉘파일을 실행하면서 나오는 로그(출력, 오류 등) 들도 파일로 저장시켰다.
> (꺽쇠) 가 하나아면 계속 덮어쓰고 >> (꺽쇠)가 두개이면 이어쓰기를 한다.
'OS > Linux' 카테고리의 다른 글
nginx failed (13: Permission denied) while connecting to upstream 오류 (2) | 2019.10.22 |
---|---|
vi 편집기 개행문자 (줄바꿈) 치환 (0) | 2019.10.21 |
File contains no section headers. (0) | 2019.10.21 |
CentOS 7 ssh port 변경 방법 (0) | 2019.10.19 |
cetnos7 Oracle client 설치 (0) | 2019.08.16 |
linux java main 실행 (0) | 2019.04.05 |
Linux SSH Are you sure you want to continue connecting (yes/no)? 제거 (0) | 2019.02.22 |
Linux Permission denied (publickey,gssapi-keyex,gssapi-with-mic) 해결 방법 (0) | 2019.02.22 |
Linux ssh public key pem 파일 접속 (0) | 2019.02.22 |
리눅스 서버에서 tomcat clean 하기 / 캐시 삭제 (0) | 2018.05.11 |