Script para Pingar um IP e criar um log mostrando a data / hora de qualquer falha, vezes acima de 500ms, e traceroute qualquer falha [fechado]

3

Eu estou tentando fazer um script para rodar constantemente que produz um log mostrando estatísticas de ping. Eu quero o log para conter e ping falhar, vezes mais de 500ms e o traceroute de todos os tempos limite. Aqui meu script:

#!/bin/bash
ip=www.google.com
while [ 1 ]; do
ping -c 1 $ip 1> /dev/null
result=$?
if [ $result == "1" ]; then
echo FAIL on 'date' >> ~/ping.log
echo FAIL on 'date'.  Doing tracert!
traceroute $ip >> ~/ping.log
fi
if [ $result == "0" ]; then
echo SUCCEED on 'date' >> ~/ping.log
echo SUCCEED on 'date'
fi
sleep .4
done

Eu copiei este script de outro site.

    
por Eric Pevehouse 28.05.2015 / 06:21

2 respostas

3

Você pode querer dar uma olhada em fping e é -t option:

-t n

Initial target timeout in milliseconds (default 500). In the default mode, this is the amount of time that fping waits for a response to its first request. Successive timeouts are multiplied by the backoff factor.

Usando fping você pode apenas verificar o status de saída sem a necessidade de analisar a saída:

IP=121.78.67.31; fping -c1 -t200 $IP || traceroute $IP
    
por 28.05.2015 / 09:52
1

linha

ping -c 1 $ip 1> /dev/null

descarta o resultado, então você não pode saber se os pings estão acima de 500 ms.

use

ping -c 1 $ip 1> /tmp/ping.txt

para manter a resposta do ping e, em seguida,

na parte em que o ping é bem sucedido

awk -F/ 'NF>5 { if ( $5 > 500 ) exit 1 ; else exit 0 }'  /tmp/ping.txt

fornecerá 0 abaixo de 500 ms e 1 se o ping médio for superior a 500 ms.

O resultado do ping parece

PING 172.18.15.22 (172.18.15.22) 56(84) bytes of data.
64 bytes from 172.18.15.22: icmp_seq=1 ttl=64 time=0.237 ms

--- 172.18.15.22 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.237/0.237/0.237/0.000 ms

o awk irá

  • -F/ use / como separador
  • NF>5 escolher linha com pelo menos /
  • if ( $5 > 500 ) valor médio do teste
  • exit 1 / exit 0 givre código de retorno adequado
por 28.05.2015 / 09:26