1

То, что я хотел бы сделать, это пропинговать IP, в то время как задержка выше определенного значения. Я думаю, что пример поможет:

Предположим, у меня есть следующий результат для команды "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

Я бы хотел, чтобы пинг прекратился после того, как задержка упадет ниже заданного значения. Скажем, 100, поэтому в приведенном выше примере он остановится после 4-го результата.

1 ответ1

2

Этот скрипт, кажется, работает:

#!/bin/sh

HOST="verizon.net"
MIN_TIME=80

LOOP="TRUE"    
while [ $LOOP = "TRUE" ]
do
  latency=`ping -c 1 $HOST | head -2 | tail -1 | sed -e 's/.*time=\(.*\) ms/\1/' | sed -e 's/\..*//'`
  echo "Latency: $latency"
  if [ $latency -lt $MIN_TIME ]
  then
    echo "Target latency ($MIN_TIME) achieved!"
    LOOP="FALSE"    
  fi
done

Вывод выглядит следующим образом, останавливаясь, когда он становится ниже моего порога (80 мс):

Latency: 83
Latency: 88
Latency: 119
Latency: 77
Target latency (80) achieved!

Настройте переменные в скрипте для вашего использования. Возможно, вам придется настроить части head/tail/sed для вашего вывода ping . Это было написано с помощью ping Mac OS X 10.9.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .