[김우연]님이 남기신 글:
>답변 감사합니다.
>죄송하지만 리플 한번 더 달겠습니다.^^
>
>앞전 스크립트에서 연결불가일때 메일발송하도록 했는데, 유독 00:00 분에 실패라고 되더군요.
>아마 ping 이 한번정도 끊어지거나 하는모양인데,
>반드시 00:00 분 인것이 좀 이해가 안가는데요.
>지금 크론으로 15분마다 체크하도록 되어 있거든요.
>하루종일 괜찮다가,
>23:15 -> 23:30 -> 23:45 -> 00:00 요기서 그러는거 보면 시스템 자체에서 도는 크론영향인거 같기도 하고...
>체크대상 리눅스가 그런게 아니고 ping 을 보내는 리눅스 말입니다.
>그럴 가능성도 있겠죠? ping 을 보내는 PC가 팬3, 512램인데 가정용 회선이라 그런가...
>
>아래는 제가 끙끙대면서 좀 수정해 봤습니다.
>
>#!/bin/sh
>#
># -- ping test and logging
>
>export LOGDATE="`date '+%Y%m%d'`"
>LOGDIR="check_logs"
>
>if [ ! -d ${LOGDIR} ] ; then
> mkdir ${LOGDIR}
>fi
>
>_checkping(){
> HOST=$1
> COUNT=$2
> EXTIME=`date '+%Y/%m/%d %H:%M:%S'`
> LOGFILE="${LOGDIR}/${LOGDATE}_${HOST}_checkping.log"
> if [ ! -e ${LOGFILE} ] ; then
> touch ${LOGFILE}
> fi
> RESULT=`ping -s 1 -c ${COUNT} -w ${COUNT} ${HOST}`
> echo -e "[${EXTIME}]\n${RESULT}\n\n" >> ${LOGFILE}
echo -e "[${EXTIME}]\n${RESULT}\n\n" | tee -a ${LOGFILE}
이렇게 고치면 되겠군요.
>}
>
>=> ping 과정을 그대로 저장하기 위해 grep 을 뺐는데요.
>RESULT=`ping -s 1 -c ${COUNT} -w ${COUNT} ${HOST}`
>
>
>RETRY=3 ## 실패시 재시도 회수
>N=1 ## start idx
>TARGET=192.168.1.1 ## host
>
>while [ ${N} -le ${RETRY} ] ;
> do
> RES=`_checkping ${TARGET} 4 | grep error`
>
>=> 위에서 로그에 저장하느라 grep 을 뺐더니만 여기에서 어떻게 비교해야 할지 모르겠습니다.ㅎㅎ
>
> if [ -z "${RES}" ] ; then
> echo "${N} : 정상"; break;
> else
> echo "${N} : 에러"
> #./sendmail.sh
> fi
> N=`expr ${N} + 1`
>done
>
>exit 0
>
>미흡한 부분좀 잡아 주심 고맙겠습니다.
>에휴... 업무하랴 이거하랴.. 상사들PC 봐주러 다니랴...
>모른다고 하면 자기한테 도전하냐고...컥^^
>짜증연속이네요.ㅎㅎ
>
>
>[산이]님이 남기신 글:
>
>>
>>[김우연]님이 남기신 글:
>>
>>>수고하십니다.
>>>책 잘 보고 있습니다. (좀 보다가 옆구리(제본)가 터졌습니다.)
>>>사무실에서 원격에 있는 리눅스 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
>>----------------------------------------------
>
>========================================
======================================== |