#!/bin/bash
# www1.test.com 에서 해당되는 모든 서버에 ping 신호를 보낸다
# ping 신호가 도착하지 않으면 특정 휴대전화로 sms 문자메세지를 보낸다.
HOST=("www1.test.com" "www2.test.com" "www3.test.com" "www4.test.com" "www5.test.com" www6.test.com" "www7.test.com" "www8.test.com" "www9.test.com" "www10.test.com")
# 루프를 위한 인덱스, 배열전체 크기를 반환하는 변수설정
FLAG=0
TOTAL_ARRAY_NUM=${#HOST[@]}
while [ "$FLAG" -lt "$TOTAL_ARRAY_NUM" ]
do
# ping 3회 쏜다.
# 상태값을 저장해 0이 아닌 코드가 나오면 sms 관련 루틴을 실행 시킨다.
/bin/ping -c3 ${HOST[$FLAG]} > /dev/null 2>&1
END_CODE=$?
if [ "$END_CODE" != "0" ]; then
# sms 루틴 호출
# 커맨드모드로 호출할때 파라미터를 get/post 방식이 아닌 바이너리의 인자형태로 보낸다.
/usr/local/bin/php -f /www/htdocs/ping.php ${HOST[$FLAG]}
fi
let "FLAG = $FLAG + 1"
done
exit 0
$ cat /www/htdocs/ping.php
<?
$host = $argv[1];
// sms 전송하는 루틴
?>
$
sms 전송서비스는 해당 업체를 선정해서 넣어준다.
cgi 모드에서 php를 실행시킬때 php 바이너리와 -f 옵션을 주고 해당 스크립트를 입력한다.
단, 아파치 모듈형태의 get/post 전송방식으로 파라미터를 넘기지않고 cgi 모드의 whitespace로 구분된 인자의 형태로 넘긴다.
파라미터를 받는 스크립트에서는 $argv 배열변수로 접근할 수 있다.
$argv[0] = "/www/htodcs/ping.php";
$argv[1] = "www2.test.com";
[출처] ping 체크로 서버 생존여부 판별해서 sms 전송하는 쉘스크립트|작성자 이뉴엔도
'프로그램개발 > Linux(Apache.vim)' 카테고리의 다른 글
도대체 KeepAlive란 무엇인가? (0) | 2014.01.14 |
---|---|
Apache MPM 참고 (0) | 2014.01.14 |
일워(ilwar.com) 오픈기록이 완전 사이트 관리자 필독서 수준 (0) | 2014.01.06 |
다른분이 리눅스 최신버전으로 셋팅한거 참고 (0) | 2013.12.30 |
서버 이전시 참고 자료 (0) | 2013.12.19 |