리눅스 아파치 서버가 살아있는지 체크하는 쉘스크립트



ping 을 막아 놓은 경우에 확인해 볼 수 있는 방법중 하나이다.


서버를 체크해서 이전 상태와 다를 경우 이메일로 결과를 전송하도록 작성해보았다.


우선 웹서버에 robots.txt 파일을 하나 생성해주자.


User-agent: *

Disallow: /


이 파일이 다운로드 받아지는지 체크하면 된다.


# touch /usr/local/bin/server-check.sh

# chmod 700 /usr/local/bin/server-check.sh

# vi /usr/local/bin/server-check.sh

#!/bin/sh


CHECK_DOMAINS="

http://www.example.com

http://www1.example.com

http://www2.example.com

http://www3.example.com

"

CHECK_FILE="robots.txt"

SAVE_PATH="/root"

TO_EMAIL="webmaster@example.com"


for DOMAIN in $CHECK_DOMAINS

do

CHECK_URL="$DOMAIN/$CHECK_FILE"

SUBJECT="$CHECK_URL 서버체크 결과"

LAST_STATE="$SAVE_PATH/$(echo $DOMAIN | base64).state"


wget -O $SAVE_PATH/$CHECK_FILE $CHECK_URL


if [ -f $LAST_STATE ] ; then

LAST_LIFE=`cat $LAST_STATE`

else

LAST_LIFE="init"

fi


if [ -s /root/$CHECK_FILE ] ; then

CURR_LIFE="true"

else

CURR_LIFE="false"

fi

echo $CURR_LIFE > $LAST_STATE


echo "LAST_LIFE : $LAST_LIFE, CURR_LIFE : $CURR_LIFE"

if [ "$LAST_LIFE" != "$CURR_LIFE" ] ; then

echo "Server status : no same"

if [ "$CURR_LIFE" == "false" ] ; then

EMAIL_MSG="$CHECK_URL 웹서비스가 반응이 없습니다."

else

EMAIL_MSG="$CHECK_URL 웹서비스가 정상입니다."

fi

echo "$EMAIL_MSG" | /bin/mail -s "$SUBJECT" "$TO_EMAIL"

else

echo "Server status : same"

fi

done


위 코드를 응용해서 크론에 등록해서 체크를 하면 된다.


[root@conoha cron.d]# echo "*/5 * * * * root /usr/local/bin/server-check.sh" > /etc/cron.d/server-check

[root@conoha cron.d]# cat /etc/cron.d/server-check

*/5 * * * * root /usr/local/bin/server-check.sh

[root@conoha cron.d]# chmod 600 /etc/cron.d/server-check

[root@conoha cron.d]# ls -l /etc/cron.d
-rw-r--r--  1 root root 128  4월  1 00:09 0hourly
-rw-r--r--. 1 root root 108  9월 19  2015 raid-check
-rw-------  1 root root  44  5월 27 10:36 server-check
-rw-------. 1 root root 235  3월  6  2015 sysstat



블로그 이미지

영은파더♥

가상서버호스팅 VPS 리눅스 서버관리 윈도우 IT

,