Come utilizzare il terminale di OS X per eseguire il ping di un IP utilizzando la latenza come condizione di arresto per un ciclo?

1

Quello che mi piacerebbe fare è eseguire il ping di un IP mentre la latenza è al di sopra di un valore specifico. Penso che un esempio ti aiuterà:

Supponiamo di avere il seguente risultato nel 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

Vorrei un modo per fermare il ping dopo che la latenza scende al di sotto di un dato valore. Diciamo 100, quindi nell'esempio sopra si fermerebbe dopo il 4 ° risultato.

    
posta Rafael Duarte 22.10.2014 - 03:56
fonte

1 risposta

1

Suppongo che potrebbe esserci un modo più semplice, ma funziona per me:

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

Uscite:

~ $ ./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
~ $
    
risposta data 22.10.2014 - 04:11
fonte

Leggi altre domande sui tag