Невозможно сравнить время пинга на лету - PullRequest
0 голосов
/ 07 апреля 2009

Я безуспешно попробовал следующую команду

sdiff <(ping www.nato.int) <(ping www.reuters.com)

Есть ли способ провести сравнение времени пинга в реальном времени?

Ответы [ 3 ]

1 голос
/ 07 апреля 2009

Вы можете сделать это, используя, скажем, perl / python / php / otherlang и время, необходимое для открытия соединения, например, с портом 80. Вы можете сохранить это в переменной и затем использовать это для математического анализа.

Примерно так в псевдо-коде:

$site1_start = get_timestamp();
$sock = opensocket($someAddress,$required_port);
if($sock) { $sock->close(); };
$site1_end = get_timestamp();
$site1_round_trip = $t2 - $t1

$site2_start = get_timestamp();
$sock = opensocket($someAddress);
if($sock) { $sock->close(); };
$site2_end = get_timestamp();
$site2_round_trip = $t2 - $t1

// now we can perform some stuff on the round trips
1 голос
/ 20 мая 2009

Обычно я просто открываю два xterms и запускаю ping в каждом. Или в одном терминале "ping host1 & ping host2 &"

fping -e даст вам задержку для списка хостов за один прогон. Так что вы можете просто сделать: смотреть fping -e www.google.com www.yahoo.com www.kernel.org

Не у всех есть часы, но вы можете просто сделать это (и тогда вы сможете увидеть историю): в то время как :; сделать свидание; fping -e www.google.com www.yahoo.com www.kernel.org; сон 1; сделано

Вывод все еще уродливый, и не у всех также установлен fping ..

Вот начало, если вы хотите получить прилично выглядящий результат. Просто дайте ему список хостов в качестве аргументов.

#!/usr/bin/perl
use strict;
use warnings;
use POSIX;

for(;;) {
    print strftime("%T:", localtime);
    foreach my $host (@ARGV) {
        my $a=`ping -c 1 $host`;
        my $latency;
        if($a =~ /rtt.* =\s+([\d.]+)\//s) {
            $latency=$1;
        } else {
            $latency="(dropped)";
        }
        print "$host:$latency\t";
    }
    print "\n";
    sleep(1);
}
1 голос
/ 07 апреля 2009

Как насчет:

watch 'ping -c 4 www.google.com; echo; ping -c 4 www.yahoo.com'

Дает такой результат:

Every 2.0s: ping -c 4 www.google.com; echo; ping -c 4 www.yahoo.com                                                                          Tue Apr  7 13:57:47 2009

PING www.l.google.com (74.125.39.105) 56(84) bytes of data.
64 bytes from fx-in-f105.google.com (74.125.39.105): icmp_seq=1 ttl=248 time=8.06 ms
64 bytes from fx-in-f105.google.com (74.125.39.105): icmp_seq=2 ttl=248 time=8.47 ms
64 bytes from fx-in-f105.google.com (74.125.39.105): icmp_seq=3 ttl=248 time=8.37 ms
64 bytes from fx-in-f105.google.com (74.125.39.105): icmp_seq=4 ttl=248 time=8.19 ms

--- www.l.google.com ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 2999ms
rtt min/avg/max/mdev = 8.061/8.276/8.478/0.196 ms

PING www-real.wa1.b.yahoo.com (87.248.113.14) 56(84) bytes of data.
64 bytes from f1.us.www.vip.ird.yahoo.com (87.248.113.14): icmp_seq=1 ttl=56 time=43.3 ms
64 bytes from f1.us.www.vip.ird.yahoo.com (87.248.113.14): icmp_seq=2 ttl=56 time=44.3 ms
64 bytes from f1.us.www.vip.ird.yahoo.com (87.248.113.14): icmp_seq=3 ttl=56 time=42.4 ms
64 bytes from f1.us.www.vip.ird.yahoo.com (87.248.113.14): icmp_seq=4 ttl=56 time=43.0 ms

--- www-real.wa1.b.yahoo.com ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 2999ms
rtt min/avg/max/mdev = 42.422/43.277/44.301/0.728 ms

Вам нужно вычесть время пинга? Это должно быть рядом (немного раздражает)? Какой у вас идеальный формат вывода?

...