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

Bash Shell脚本:使用命令Ping传输跃点的速度,bash,shell,unix,ping,cut,Bash,Shell,Unix,Ping,Cut,创建一个shell脚本,该脚本将计算机和所选IP之间的跃点传输速度关联起来。使用PING命令并以kB/秒表示结果 !/bin/bash 我创建了一个临时文件 touch info.txt; 我接第二行命令PING两秒钟后停止 我将结果发布到文件中 ping -t 2 $1 | head -2 | tail -1 > info.txt; rm file.txt; 我以字节为单位 cut -c -2 info.txt; 我要ms cut -c 53-59 info.txt; 现在,

创建一个shell脚本,该脚本将计算机和所选IP之间的跃点传输速度关联起来。使用PING命令并以kB/秒表示结果

!/bin/bash
我创建了一个临时文件

touch info.txt;
我接第二行命令PING两秒钟后停止 我将结果发布到文件中

ping -t 2 $1 | head -2 | tail -1 > info.txt;
rm file.txt;
我以字节为单位

cut -c -2 info.txt;
我要ms

cut -c 53-59 info.txt;
现在,如何以KB和秒为单位进行转换

显示结果

echo "Result: .....";
我删除了这个文件

ping -t 2 $1 | head -2 | tail -1 > info.txt;
rm file.txt;
你可以做:

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"
这当然是考虑到1kib=1024字节,其中KiB通常用于KB。

RESULT=$(ping-t2-c2$1 | grep'time='| head-1 | sed's/([0-9][0-9])(time=)((ms)/\1:\3/g')
echo“BYTES=${RESULT%:}”
echo“速度=${RESULT}:}”



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

谢谢大家!工作

touch info.txt

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

字节=$(cut-c-2info.txt)

ms=$(cut-c53-59 info.txt)

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

秒=$(回声“标度=5;$ms/1000”| bc)

速度=$(回声“刻度=5;$KB/$Sec”| bc)

echo“跳跃速度:$KB/秒”

rm info.txt


您应该考虑<代码>字节/MSEC/<代码>与代码> KB/SEC/<代码>相同。