创建一个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;
答案 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;