Gravar estado online/offline no arquivo de log

Gravar estado online/offline no arquivo de log

Estou procurando uma maneira de registrar o estado online/offline de um host Linux em um arquivo de log localmente.

Tentei usar pingpara isso, mas ele não registrou tempos limite/pacotes descartados, apenas mostra transmissões bem-sucedidas: ping -D 8.8.8.8 | awk 'NR>1 { printf strftime("%c", $0) "%s",$2; }' RS=[ FS=]

Mi 14 Okt 2015 13:03:06 CEST 64 bytes from 8.8.8.8: icmp_req=155 ttl=55 time=18.4 ms
Mi 14 Okt 2015 13:03:07 CEST 64 bytes from 8.8.8.8: icmp_req=156 ttl=55 time=18.6 ms
Mi 14 Okt 2015 13:03:08 CEST 64 bytes from 8.8.8.8: icmp_req=157 ttl=55 time=18.4 ms
Mi 14 Okt 2015 13:05:19 CEST 64 bytes from 8.8.8.8: icmp_req=244 ttl=55 time=18.4 ms
Mi 14 Okt 2015 13:05:20 CEST 64 bytes from 8.8.8.8: icmp_req=245 ttl=55 time=18.4 ms

Portanto, tenho que examinar cuidadosamente os números das solicitações para detectar estados off-line.

Alguém sabia uma maneira melhor de fazer isso ou pode nomear uma ferramenta para isso?

Desde já, obrigado.

Responder1

Já existem muitas ferramentas disponíveis que fazem isso, como Munin, Nagios, etc. Não vejo por que recriar a roda, mas se você quiser uma solução shell, aqui vai:

#!/bin/bash

logfile="/var/log/up-or-down.log";
ip_address_for_testing="192.168.1.10";

while [[ true ]]; do
    ping -c 5 $ip_address_for_testing;
    if [[ $? -eq 0 ]]; then
        echo "IP status for ${ip_address_for_testing}: UP" >> $logfile;
    else
        echo "IP status for ${ip_address_for_testing}: DOWN" >> $logfile;
    fi;
    sleep 5;
done;

O exemplo acima enviará 5 ECHO REQUESTS para o host definido em $ip_address_for_testing e se tudo correr bem, ele escreverá em $logfile se estiver ativo ou inativo. Salve-o em um arquivo, dê permissões de execução com chmod e chame-o através de /etc/rc.local ou /etc/rcS.d (se você escolher a segunda opção, terá que salvá-lo em /etc/init .d e crie um link simbólico para ele) se desejar iniciá-lo no momento da inicialização.

Cia!

informação relacionada