0

我尝试了以下命令失败

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

有什么办法可以实时比较ping时间?

4

3 回答 3

1

怎么样:

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

给出如下结果:

每2.0s:ping -c 4 www.google.com;回声; ping -c 4 www.yahoo.com 2009 年 4 月 7 日星期二 13:57:47

PING www.l.google.com (74.125.39.105) 56(84) 字节数据。
来自 fx-in-f105.google.com (74.125.39.105) 的 64 个字节:icmp_seq=1 ttl=248 time=8.06 ms
来自 fx-in-f105.google.com (74.125.39.105) 的 64 个字节:icmp_seq=2 ttl=248 time=8.47 ms
来自 fx-in-f105.google.com (74.125.39.105) 的 64 个字节:icmp_seq=3 ttl=248 time=8.37 ms
来自 fx-in-f105.google.com (74.125.39.105) 的 64 个字节:icmp_seq=4 ttl=248 time=8.19 ms

--- www.l.google.com ping 统计 ---
4个包发送,4个接收,0%丢包,时间2999ms
rtt 最小值/平均值/最大值/mdev = 8.061/8.276/8.478/0.196 毫秒

PING www-real.wa1.b.yahoo.com (87.248.113.14) 56(84) 字节数据。
来自 f1.us.www.vip.ird.yahoo.com (87.248.113.14) 的 64 个字节:icmp_seq=1 ttl=56 time=43.3 ms
来自 f1.us.www.vip.ird.yahoo.com (87.248.113.14) 的 64 个字节:icmp_seq=2 ttl=56 time=44.3 ms
来自 f1.us.www.vip.ird.yahoo.com (87.248.113.14) 的 64 个字节:icmp_seq=3 ttl=56 time=42.4 ms
来自 f1.us.www.vip.ird.yahoo.com (87.248.113.14) 的 64 个字节:icmp_seq=4 ttl=56 time=43.0 ms

--- www-real.wa1.b.yahoo.com ping 统计 ---
4个包发送,4个接收,0%丢包,时间2999ms
rtt min/avg/max/mdev = 42.422/43.277/44.301/0.728 ms

你需要减去ping时间吗?它必须并排(有点烦人)吗?你理想的输出格式是什么?

于 2009-04-07T11:59:27.473 回答
1

您可以使用 perl/python/php/otherlang 和 time 来执行此操作,例如打开连接到端口 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
于 2009-04-07T12:10:45.607 回答
1

通常我只是并排打开两个 xterm 并在每个中运行 ping。或在一个终端“ping host1 & ping host2&”

fping -e 将在一次运行中为您提供主机列表的延迟。所以你可以这样做:看 fping -e www.google.com www.yahoo.com www.kernel.org

不是每个人都有手表,但你可以这样做(然后你可以看到历史):while :; 约会;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);
}
于 2009-05-20T19:36:33.580 回答