¿Cómo usar el terminal OS X para hacer ping a una IP usando la latencia como condición de parada para un bucle?

1

Lo que me gustaría hacer es hacer ping a una IP mientras la latencia está por encima de un valor específico. Creo que un ejemplo ayudará:

Supongamos que tengo el siguiente resultado para el comando "ping *IP here*" :

PING *IP here* (*IP here*): 56 data bytes
64 bytes from *IP here*: icmp_seq=0 ttl=53 time=127.238 ms
64 bytes from *IP here*: icmp_seq=1 ttl=53 time=312.762 ms
64 bytes from *IP here*: icmp_seq=2 ttl=53 time=251.475 ms
64 bytes from *IP here*: icmp_seq=3 ttl=53 time=21.174 ms
64 bytes from *IP here*: icmp_seq=4 ttl=53 time=27.953 ms

Me gustaría una manera de hacer que el ping se detenga después de que la latencia caiga por debajo de un valor determinado. Digamos 100, así que en el ejemplo anterior se detendría después del cuarto resultado.

    
pregunta Rafael Duarte 22.10.2014 - 03:56

1 respuesta

1

Supongo que podría haber una forma más fácil, pero me funciona:

#!/bin/bash

TRESHOLD=10

while $(true); do 

    time=$(ping -c 1 google.com | grep time | cut -d ' ' -f 7 | cut -d '=' -f 2 | cut -d '.' -f 1) 

    if [ $time -lt $TRESHOLD ]; then
        echo "Less than $TRESHOLD ($time), continue"
        sleep 1
    else
        echo "More than $TRESHOLD ($time), stop"
        exit
    fi

done

Salidas:

~ $ ./1.sh
Less than 10 (8), continue
Less than 10 (9), continue
Less than 10 (9), continue
Less than 10 (9), continue
Less than 10 (9), continue
More than 10 (11), stop
~ $
    
respondido por el Marek Bettman 22.10.2014 - 04:11

Lea otras preguntas en las etiquetas