2009-04-07 8 views
0

j'ai essayé la commande suivante sans succèsImpossible de comparer les temps de ping sur fly

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

Est-il possible d'avoir une comparaison en temps réel entre les temps de ping?

+0

De quel environnement s'agit-il? PowerShell? – unwind

+0

@unwind: J'utilise bash dans Ubuntu et Mac aussi. –

+0

Une autre question, est-ce que ce doit être des paquets ICMP? – Wayne

Répondre

1

Habituellement je viens d'ouvrir deux xterms côte à côte et exécuter ping dans chaque. Ou dans un terminal "ping host1 & ping host2 &"

fping -e vous donnera la latence à une liste d'hôtes en une seule fois. Donc, vous pouvez simplement faire: regarder fping -e www.google.com www.yahoo.com www.kernel.org

Tout le monde n'a pas regarder, mais vous pouvez le faire (et vous pouvez voir l'historique) : tandis que:; faire la date; fping -e www.google.com www.yahoo.com www.kernel.org; dormir 1; fait

La sortie est toujours laid, et pas tout le monde a Fping installé soit ..

Voici un début si vous voulez produire une sortie à la recherche décent. Donnez-lui simplement une liste d'hôtes en tant qu'arguments.

#!/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); 
} 
+0

Merci pour votre réponse! J'accepte la réponse parce qu'elle est la plus indépendante de la plateforme. –

1

Que diriez-vous:

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

donne des résultats comme celui-ci:

 
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 

Avez-vous besoin de soustraire les temps de ping? Est-ce que ça doit être côte à côte (un peu ennuyeux)? Quel est votre format de sortie idéal?

+0

@Jaka: Quelle coque utilisez-vous? Je n'ai pas trouvé la commande watch dans les référentiels Linux. –

+0

J'utilise bash. watch est dans le paquet 'procps' sur Debian (probablement similaire dans Ubuntu). Il est disponible en tant que paquet séparé ('watch') via Fink sur Mac OS X. –

+0

La commande fonctionne bien aussi sans écho; –

1

Vous pouvez le faire en utilisant say perl/python/php/otherlang et le temps qu'il faut pour ouvrir une connexion pour dire le port 80 par exemple. Vous pouvez stocker ceci dans une variable, puis l'utiliser pour l'analyse mathématique.

Quelque chose comme ce pseudo-code:

$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