Shell脚本:使用命令Ping传输的速度

时间:2015-06-18 09:14:06

标签: bash shell unix ping cut

创建一个shell脚本,该脚本将机器与所选IP之间的HOP传输速度联系起来。使用PING命令并以kB / sec。

表示结果
!/bin/bash

我创建了一个临时文件

touch info.txt;

我在第二行命令PING在两秒后停止了 我将结果发布在文件中。

ping -t 2 $1 | head -2 | tail -1 > info.txt;

我拿字节

cut -c -2 info.txt;

我拿ms

cut -c 53-59 info.txt;

现在,如何以KB和Sec?

进行转换

显示结果

echo "Result: .....";

我删除了该文件。

rm file.txt;

3 个答案:

答案 0 :(得分:0)

你可以这样做:

bytes=$(cut -c -2 info.txt)
ms=$(cut -c 53-59 info.txt)
echo "KiB: "$(($bytes/1024))
echo "Sec: "$(($ms/1000))
speed=$((1000*$bytes*1000/1024/$ms))
speed=$(echo $speed|sed -r 's/^(.*)(.{3})$/\1.\2/')
echo "Speed: $speed KiB/s"

这当然是考虑1 KiB = 1024字节,其中KiB通常用于KB。

答案 1 :(得分:0)

RESULT = $(ping -t 2 -c 2 $ 1 | grep'time ='| head -1 | sed's /([0-9] [0-9])。(time =) (。)(ms)/ \ 1:\ 3 / g')
echo“BYTES = $ {RESULT%:}”
echo“SPEED = $ {RESULT#
:}”



对于转换部分,您可能需要使用python或perl。在bash中,无法计算小数。

答案 2 :(得分:0)

谢谢大家!工作!

  

触摸info.txt;

     

ping -t 2 $ 1 |头-2 | tail -1> info.txt;

     

bytes = $(cut -c -2 info.txt);

     

ms = $(cut -c 53-59 info.txt);

     

KB = $(echo" scale = 5; $ bytes / 1024" | bc);

     

秒= $(echo" scale = 5; $ ms / 1000" | bc);

     

速度= $(回声"比例= 5; $ KB / $秒" | bc);

     回声" HOP的速度:$ Speed KB / sec。&#34 ;;

     

rm info.txt;