1 votos

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

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

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

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 el ping a parar después de que la latencia se reduce por debajo de un valor dado. Digamos 100, por lo que en el ejemplo anterior que iba a parar después de que el 4 de resultado.

1voto

hillu Puntos 4033

Supongo que no podría ser más fácil, pero a mí 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
~ $

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X