Technical Note/LINUX

0. 개요


서버 작업을 하다 보면, 여러대 서버에 접속 해서 같은 작업을 해야 하는 경우가 있다.


하나하나의 서버에 다 접속 해야 되고, 명령어도 다 써줘야 한다.


이런 작업이 자주 있을때, 효율 적으로 작업 할 수 있도록 간단한 스크립트를 만들어 보겠다.




1. 준비


SSH 자동 로그인 스크립트를 만드릭 위해서는 sshpass 라는 툴이 필요 하다.


우분투에서는 apt-get -y install sshpass 로 바로 설치가 가능 하고


centos, sulinux..등은 소스를 다운 받아 컴파일 해줘야 한다.




2. sshpass 툴 옵션


sshpass -p 패스워드 ssh 아이디@도메인 명령어


    예) sshpass -p 123456 ssh abcde@abcde.co.kr


이때, -p 옵션 다음에 나오는 패스워드를 위와 같이 사용하기 싫으면 vi로 파일을 만들어 거기에 적어 놓고 사용 할 수 있다


    예) vi pass


         123456




         sshpass -f pass ssh abcde@abcde.co.kr




이렇게 간단하게 로그인 되면 좋겠지만. 처음 접속 하는 서버나, 디스크 등의 문제로 교체 및 재설치 하는 경우


known host에 저장 할 것인가? 라는 메세지가 뜬다. 이럴때 아래와 같이 사용하면 된다.


     예) sshpass -f pass ssh -oStrictHostKeyChecking=no ssh abcde@abcde.co.kr


-oStrictHostKeyChecking=no 옵션은 known host에 저장 할 것이냐는 질문에 yes를 누르고 넘어가는 옵션이다.




3. SSH 자동 로그인 스크립트 예제


접속 해서 작업 해야 하는 서버가 1~2대 일경우는 이런 스크립트도 필요 없이 작업 하면 되지만.


10대 20대 30대 이렇게 점점 만아 질수록, 한숨 부터 나온다.


vi login.sh


#!/bin/bash


for i in $(seq 1 10); do

        sshpass -f pass ssh -oStrictHostKeyChecking=no root@192.168.0.${i} "ls; exit;"

done


위 예제는 IP 192.168.0.1에서 192.168.0.10번 서버까지 접속 해서 ls 명령을 내리는 스크립트 이다.


########################################################################################


vi hosts.allow.sh


#!/bin/bash


for i in $(seq 1 10); do

        sshpass -f password ssh -oStrictHostKeyChecking=no root@192.168.0.${i} "echo "ALL : 192.168.100.3" >> /etc/hosts.allowt; exit"

done


위 예제는 hosta.allow에 ALL : 192.168.100.3 을 추가하는 내용이다.




4. 마무리


위 스크립트는 간단 하지만, 많은 서버에 작업을 해야 할 경우 아주 유용하다.


간단한 예를 들어 설명을 했지만, 주기적으로 해야 되는 패스워드 변경 작업 등


조금만 더 생각 해보면 많은 곳에 사용 할 수 있는, 유용한 스크립트이다.