[김우연]님이 남기신 글:
>수고하십니다.
>책 잘 보고 있습니다. (좀 보다가 옆구리(제본)가
터졌습니다.)
>사무실에서 원격에 있는 리눅스 PC의 접속상태를 체크하고자
이곳의 게시판 검색을 통해 아래와 같이 스크립트를 크론으로
넣었습니다.
>
>#!/bin/sh
>
>ping_test() {
> result=`ping -s 1 -c 4 -w 4 xxx.xxx.xxx.xxx 2>/dev/null | grep "4
packets transmitted, 4 received"`
> if [ X"$result" = "X" ] ; then
> echo "연결불가"
## 메일발송
> else
> echo "연결정상"
> fi
>}
>
>ping_test
>
>exit 0
>
>
>근데 어제 밤에 보니 4번 요청에 4번 응답이 없었던
모양이에요.
>게시판 자료상으로는 -c 1 -w 1 로 되어 있어서 혹시나 해서
4번씩 하도록 했는데 4번이 모두 응답되지 않는 경우가 있는거
같아요.
>리눅스는 정상인데 회선지연등의 이유가 의심은
되는데요.
>
>혹시, 4번을 날려서 2번이상만 응답되면 정상.. 뭐 이런식으로
할 수는 없을까요?
>아니면, ping 시도후 grep "4 packets transmitted, 4 received" 이와
같이 안나오면 3회까지 재시도..
>크론으로 20분간격으로 하고 있는데, 시도결과를 로그파일에
기록을 했으면 좋겠는데...
>이런식으로 좀 유연하게 해보면 좋겠는데, 쉘스크립트가
깡맹이라.. 문의좀 드립니다.
>
>원격에 있는 리눅스는 사실 다른 사무실에 있는 건데
KT기업전용선 입니다.
>사무실 인터넷 쓰고 이거저거 하는용도 입니다.
========================================
앗 오랫만에 질문이 올라왔네요. ㅎㅎ
------------------------------------
#!/bin/sh
#
# -- ping test and logging
_ping()
{
HOST=$1
COUNT=$2
ping -s 1 -c ${COUNT} -w ${COUNT} ${HOST} 2>/dev/null | grep error
}
RETRY=3 ## 실패시 재시도 회수
N=1 ## start idx
TARGET=xxx.xxx.xxx.xxx ## host
DATE=`date '+%Y-%m-%d %H:%S'`
while [ ${N} -le ${RETRY} ] ;
do
R=`_ping ${TARGET} 4`
[ -z "${R}" ] && { R=OK; break; }
N=`expr ${N} + 1`
done
echo "${DATE} => ${R}" >> /var/log/ping-${TARGET}.log
exit 0
----------------------------------------------
|