我尝试了以下命令失败
sdiff <(ping www.nato.int) <(ping www.reuters.com)
有什么办法可以实时比较ping时间?
怎么样:
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时间吗?它必须并排(有点烦人)吗?你理想的输出格式是什么?
您可以使用 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
通常我只是并排打开两个 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);
}