{Programing}/Server

리눅스 쉘 스크립트 예제 분석

탱타로케이 2017. 10. 23. 16:32

#! /bin/sh        //쉘 스크립트의 시작.

DEV="eth0"      // 변수

VIP="10.0.0.1 10.0.0.2"  //변수 리스트.



//함수.

ip_add(){


//MAC 이라는 변수에 $DEV 장치의 ip에 해당하는 정보중에

// 파일 첫머리 부터 :를 지우고 정규식에 해당하는 내용이 only한 것이 있으면

 MAC=`ip link show $DEV | egrep -o `([0-9a-f]{2}:){5}[0-9a-f]{2}` | head -n 1 | tr -d :`


//장치에 ip를 추가.

 ip addr add $1/24 dev $DEV


//IP주소와 MAC주소를 다른서버에 통지.

 send_arp $1 $MAC 255.255.255.255 ffffffffffff

}


//함수

ip_del(){

//장치의 IP 주소를 삭제.

 ip addr del $1/24 dev $DEV

}



//함수

healthcheck(){

//$VIP 개수만큼 I 에 대입해보며 실행.

 for I in $VIP;

 do

// curl 로 I에 대입된 VIP 의 응답이 200과 다르면

//즉 VIP에 대해 헬스체크가 실패할 경우

if ["200" -ne "`curl -s -I 'http://$i/' | head -n 1 | cut -f 2 -d ' '`" ];

then

// $DEV 장치에 $i와 같은 IP 가 없으면

// VIP가 자신에게 할당된 IP가 아니라면.

if [ -z "`ip addr show $DEV | grep $i`"];

then

//ip 추가

ip_add $i

else //맞다면

//ip 삭제

ip_del $i

fi

fi

 done

}


while true;

do

healthcheck;

sleep 1;

done