タイムスタンプ付きホスト監視スクリプト

タイムスタンプ付きホスト監視スクリプト

ホスト監視のためにこのスクリプトを作成しました。

目標は、ホストをpingして出力をファイルに書き込むと同時に、出力を端末に表示することです。ホストが応答しない場合、時間と対応するエラーメッセージが記録されます。目標は、稼働/中断時間のタイムスタンプを記録することです。

#!/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が成功したときにスクリプトの出力が次のようになることです(2行の出力が出て、最初の行は必要ありません)。

[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

おすすめ記事