타임스탬프가 지정된 호스트 모니터링 스크립트

타임스탬프가 지정된 호스트 모니터링 스크립트

방금 호스트 모니터링을 위해 이 스크립트를 만들었습니다.

목표는 호스트를 핑하고 출력을 파일에 기록하는 동시에 출력을 터미널에도 표시하는 것입니다. 호스트가 응답하지 않으면 시간과 해당 오류 메시지가 기록됩니다. 목표는 가동/중단 시간의 타임스탬프를 기록하는 것입니다.

#!/bin/bash

DATE=$(date +"%d.%m.%Y %T")
SHORT_DATE=$(date +"%d.%m.%Y")

echo
echo "Pinging host " $@
echo

HOST=$@


ping $HOST | while read PONG
do
        grep ttl <<< "$PONG"

        if [ $? -eq 0 ]; then

                echo "`date`: $PONG"
                echo "`date`: $PONG" &>> ping_check_$SHORT_DATE.log

        else

                echo "`date`: ping failed, $HOST host is DOWN!" &>> ping_check_$SHORT_DATE.log
                echo "$PONG" &>> ping_check_$SHORT_DATE.log
        fi
done

이제 문제는 ping이 성공할 때 스크립트의 출력이 다음과 같다는 것입니다(두 줄의 출력이 나오며 첫 번째 줄은 필요하지 않습니다).

[spirit@vas scripts]$ ./ping_check3.sh 10.10.0.254

Pinging host  10.10.0.254

64 bytes from 10.10.0.254: icmp_seq=1 ttl=255 time=1.18 ms
Wed Jun  3 10:35:52 CEST 2015: 64 bytes from 10.10.0.254: icmp_seq=1 ttl=255 time=1.18 ms
64 bytes from 10.10.0.254: icmp_seq=2 ttl=255 time=1.28 ms
Wed Jun  3 10:35:53 CEST 2015: 64 bytes from 10.10.0.254: icmp_seq=2 ttl=255 time=1.28 ms
64 bytes from 10.10.0.254: icmp_seq=3 ttl=255 time=1.34 ms

위의 출력은 터미널에서 나온 것입니다. ping $HOST첫 번째 행이 아닌 타임스탬프가 있는 결과만 필요합니까 ? :

Wed Jun  3 10:35:52 CEST 2015: 64 bytes from 10.10.0.254: icmp_seq=1 ttl=255 time=1.18 ms

타임스탬프가 있는 줄만 출력에 표시되도록 스크립트를 수정하려면 어떻게 해야 합니까?


편집하다:

다시 한번 확인하기 위해:

로그 파일의 출력은 다음과 같습니다.

Wed Jun  3 10:35:52 CEST 2015: 64 bytes from 10.10.0.254: icmp_seq=1 ttl=255 time=1.18 ms
Wed Jun  3 10:35:53 CEST 2015: 64 bytes from 10.10.0.254: icmp_seq=2 ttl=255 time=1.28 ms
Wed Jun  3 10:35:54 CEST 2015: 64 bytes from 10.10.0.254: icmp_seq=3 ttl=255 time=1.34 ms
Wed Jun  3 10:35:55 CEST 2015: 64 bytes from 10.10.0.254: icmp_seq=4 ttl=255 time=1.58 ms

답변1

그냥 편집하세요:

grep ttl <<< "$PONG"

도착하다:

grep -q ttl <<< "$PONG"

당신이 얻는 출력은 플래그를 grep사용하면 조용합니다.-qgrep

관련 정보