Script de monitoramento do host com timestamp

0

Acabei de criar este script para monitoramento de host.

O objetivo é executar ping no host e registrar a saída em um arquivo, mas também mostrar a saída para o terminal. Se o host não estiver respondendo, registrará a hora com a mensagem de erro apropriada. O objetivo é registrar a data e a hora dos tempos para cima / para baixo.

#!/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

Agora, o problema é que, quando o ping é bem-sucedido, a saída do script se parece com isso (recebo duas linhas de saída e não preciso da primeira linha):

[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

A saída acima é do TERMINAL. Preciso apenas do resultado com o timestamp e não da primeira linha que vem do 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

Como posso corrigir o script para que apenas a linha com o carimbo de data / hora seja exibida na saída?

EDITAR:

Apenas para esclarecimentos:

A saída do arquivo de log é assim:

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
    
por Spirit 03.06.2015 / 10:45

1 resposta

2

Basta editar:

grep ttl <<< "$PONG"

Para:

grep -q ttl <<< "$PONG"

A saída obtida é de grep . Com o -q flag grep está silencioso.

    
por 03.06.2015 / 11:06