终端下显示网速的SHELL脚本
<div >除了视频, 终端下的生活已经很完美和效率了 <br>( framebuffer: 喂, 我可以让你在字符界面看电影的... ) <br>
<br>
<br>
我几乎用不到X, 而且X20的配置, 开X有点虚... <br>
<br>
<br>
more /proc/cpuifon ; free ; df ; top <br>
可以看一些系统的状况, 比如CPU信息, 内存, 硬盘, 进程... <br>
但是dorainm一直没有找到一款能即时显示网速的 <br>
比如 eth0上传 xx KB/S <br>
虽然 /sbin/ifconfig 可以查看网络状态 <br>
<br>
<br>
毛主席告诉我们, 自动动手, 丰衣足食 <br>
因为 /sbin/ifconfig 里面有条信息, <br>
告诉我们当前某个连接的总数据量 total bytes <br>
<br>
<br>
如果我们每1秒钟去获取这个total bytes <br>
然后把两次结果相减, 不就可以获得 xx B/S的网络速度了吗?? <br>
<br>
<br>
当然, 这个数字也会一时无法直观表示, <br>
比如当这数字大于 1024时候, 就转化为 KB/S 的单位 <br>
如果数字大于 1024*1024, 就转化为 MB/S <br>
... ... <br>
这样子结果就比较直观了 <br>
<br>
<br>
okay, let's go <br>
rate程序写了有一年了吧, google了好多拼凑出来的 <br>
代码很难阅读, 本来想什么时候优化一下, 发布出来 <br>
但是一直没有做, 今天决定还是拿出来让需要的群众来使用吧 <br>
<br>
<br>
运行<br><br><div class="msgheader"><table align="center"><tr><td>$ rate --help <br>
usage : /home/dorainm/bin/rate [DEV_NAME] [ TIMES | -t ] <br>
<br>
<br>
DEV_NAME the name of the network device, default: eth0 <br>
TIMES the times of counts, default: 1 <br>
-t counting until break <br>
$</td></tr></table></div><div class="msgborder"><br> </div><br>比如查看 lo 1次( 1秒钟 ) 的网络速度<br><table align="center"><tr><td>$ rate lo <br>
the Rate of Network, by dorainm, dora...@gmail.com <br>
----------------------------------------------------- <br>
RX Rate = 767 B/S Totle Bytes : 8.182 <br>
TX Rate = 767 B/S Totle Bytes : 8.182 <br>
----------------------------------------------------- <br>
All Done <br>
$</td></tr></table><br><div class="msgborder"><br> </div><br>下面看持续观看 eth0 的网络速度<br><table align="center"><tr><td>$ rate -t <br>
the Rate of Network, by dorainm, dora...@gmail.com <br>
----------------------------------------------------- <br>
RX Rate = 0 B/S Totle Bytes : 40.710 MB <br>
TX Rate = 0 B/S Totle Bytes : 30.908 MB <br>
----------------------------------------------------- <br>
RX Rate = 0 B/S Totle Bytes : 40.710 MB <br>
TX Rate = 0 B/S Totle Bytes : 30.908 MB <br>
----------------------------------------------------- <br>
RX Rate = 60 B/S Totle Bytes : 40.710 MB <br>
TX Rate = 66 B/S Totle Bytes : 30.908 MB <br>
----------------------------------------------------- <br>
RX Rate = 154 B/S Totle Bytes : 40.710 MB <br>
TX Rate = 146 B/S Totle Bytes : 30.908 MB <br>
----------------------------------------------------- <br>
RX Rate = 0 B/S Totle Bytes : 40.710 MB <br>
TX Rate = 0 B/S Totle Bytes : 30.908 MB <br>
----------------------------------------------------- <br>
RX Rate = 71 B/S Totle Bytes : 40.710 MB <br>
TX Rate = 137 B/S Totle Bytes : 30.908 MB <br>
----------------------------------------------------- <br>
RX Rate = 0 B/S Totle Bytes : 40.710 MB <br>
TX Rate = 0 B/S Totle Bytes : 30.908 MB <br>
----------------------------------------------------- <br>
RX Rate = 140 B/S Totle Bytes : 40.710 MB <br>
TX Rate = 156 B/S Totle Bytes : 30.908 MB <br>
----------------------------------------------------- <br>
RX Rate = 1.343 KB/S Totle Bytes : 40.712 MB <br>
TX Rate = 707 B/S Totle Bytes : 30.909 MB <br>
----------------------------------------------------- <br>
RX Rate = 757 B/S Totle Bytes : 40.713 MB <br>
TX Rate = 564 B/S Totle Bytes : 30.910 MB <br>
----------------------------------------------------- <br>
RX Rate = 370 B/S Totle Bytes : 40.713 MB <br>
TX Rate = 263 B/S Totle Bytes : 30.910 MB <br>
----------------------------------------------------- <br>
RX Rate = 0 B/S Totle Bytes : 40.713 MB <br>
TX Rate = 0 B/S Totle Bytes : 30.910 MB <br>
----------------------------------------------------- <br>
RX Rate = 256 B/S Totle Bytes : 40.713 MB <br>
TX Rate = 619 B/S Totle Bytes : 30.910 MB <br>
----------------------------------------------------- <br>
RX Rate = 6.039 KB/S Totle Bytes : 40.719 MB <br>
TX Rate = 354 B/S Totle Bytes : 30.911 MB <br>
----------------------------------------------------- <br>
RX Rate = 0 B/S Totle Bytes : 40.719 MB <br>
TX Rate = 0 B/S Totle Bytes : 30.911 MB <br>
----------------------------------------------------- <br>
RX Rate = 1.470 KB/S Totle Bytes : 40.720 MB <br>
TX Rate = 210 B/S Totle Bytes : 30.911 MB <br>
----------------------------------------------------- <br>
RX Rate = 66 B/S Totle Bytes : 40.721 MB <br>
TX Rate = 0 B/S Totle Bytes : 30.911 MB <br>
----------------------------------------------------- <br>
RX Rate = 0 B/S Totle Bytes : 40.721 MB <br>
TX Rate = 0 B/S Totle Bytes : 30.911 MB <br>
----------------------------------------------------- <br>
RX Rate = 0 B/S Totle Bytes : 40.721 MB <br>
TX Rate = 0 B/S Totle Bytes : 30.911 MB <br>
----------------------------------------------------- <br>
RX Rate = 0 B/S Totle Bytes : 40.721 MB <br>
TX Rate = 0 B/S Totle Bytes : 30.911 MB <br>
----------------------------------------------------- <br>
RX Rate = 370 B/S Totle Bytes : 40.721 MB <br>
TX Rate = 366 B/S Totle Bytes : 30.911 MB <br>
----------------------------------------------------- <br>
RX Rate = 1.417 KB/S Totle Bytes : 40.722 MB <br>
TX Rate = 430 B/S Totle Bytes : 30.912 MB <br>
----------------------------------------------------- <br>
RX Rate = 405 B/S Totle Bytes : 40.723 MB <br>
TX Rate = 66 B/S Totle Bytes : 30.918 MB <br>
----------------------------------------------------- <br>
RX Rate = 60 B/S Totle Bytes : 40.723 MB <br>
TX Rate = 128 B/S Totle Bytes : 30.918 MB <br>
----------------------------------------------------- <br>
RX Rate = 0 B/S Totle Bytes : 40.723 MB <br>
TX Rate = 152 B/S Totle Bytes : 30.919 MB <br>
----------------------------------------------------- <br>
RX Rate = 74 B/S Totle Bytes : 40.724 MB <br>
TX Rate = 614 B/S Totle Bytes : 30.919 MB <br>
----------------------------------------------------- <br>
RX Rate = 5.904 KB/S Totle Bytes : 40.729 MB <br>
TX Rate = 300 B/S Totle Bytes : 30.920 MB <br>
----------------------------------------------------- <br>
RX Rate = 1.535 KB/S Totle Bytes : 40.731 MB <br>
TX Rate = 210 B/S Totle Bytes : 30.920 MB <br>
----------------------------------------------------- <br>
RX Rate = 0 B/S Totle Bytes : 40.731 MB <br>
TX Rate = 0 B/S Totle Bytes : 30.920 MB <br>
----------------------------------------------------- <br>
RX Rate = 0 B/S Totle Bytes : 40.731 MB <br>
TX Rate = 0 B/S Totle Bytes : 30.920 MB <br>
----------------------------------------------------- <br>
RX Rate = 0 B/S Totle Bytes : 40.731 MB <br>
TX Rate = 0 B/S Totle Bytes : 30.920 MB <br>
----------------------------------------------------- <br>
RX Rate = 140 B/S Totle Bytes : 40.731 MB <br>
TX Rate = 156 B/S Totle Bytes : 30.920 MB <br>
----------------------------------------------------- <br>
RX Rate = 0 B/S Totle Bytes : 40.731 MB <br>
TX Rate = 0 B/S Totle Bytes : 30.920 MB <br>
----------------------------------------------------- <br>
RX Rate = 0 B/S Totle Bytes : 40.731 MB <br>
TX Rate = 0 B/S Totle Bytes : 30.920 MB <br>
----------------------------------------------------- <br>
RX Rate = 230 B/S Totle Bytes : 40.731 MB <br>
TX Rate = 210 B/S Totle Bytes : 30.920 MB <br>
----------------------------------------------------- <br>
RX Rate = 0 B/S Totle Bytes : 40.731 MB <br>
TX Rate = 0 B/S Totle Bytes : 30.920 MB <br>
----------------------------------------------------- <br>
RX Rate = 1.595 KB/S Totle Bytes : 40.733 MB <br>
TX Rate = 582 B/S Totle Bytes : 30.921 MB <br>
----------------------------------------------------- <br>
RX Rate = 60.839 KB/S Totle Bytes : 40.792 MB <br>
TX Rate = 2.443 MB/S Totle Bytes : 33.364 MB <br>
----------------------------------------------------- <br>
RX Rate = 0 B/S Totle Bytes : 40.792 MB <br>
TX Rate = 0 B/S Totle Bytes : 33.364 MB <br>
----------------------------------------------------- <br>
RX Rate = 74 B/S Totle Bytes : 40.792 MB <br>
TX Rate = 615 B/S Totle Bytes : 33.365 MB <br>
----------------------------------------------------- <br>
RX Rate = 7.312 KB/S Totle Bytes : 40.799 MB <br>
TX Rate = 408 B/S Totle Bytes : 33.365 MB <br>
----------------------------------------------------- <br>
^c <br>
$</td></tr></table><br><br><br>附rate源码<br><br><br></div><br>
<p ><code>#!/bin/bash<br>
<br>
<br>
HL_START="\033[37;40;1m"<br>
HL_END="\033[0m"<br>
DEV_NAME="eth0"<br>
<br>
<br>
function disp_usage()<br>
{<br>
printf "usage : $1 [DEV_NAME] [ TIMES | -t ]\n\n"<br>
printf " DEV_NAME the name of the network device, default: eth0\n"<br>
printf " TIMES the times of counts, default: 1\n"<br>
printf " -t counting until break\n"<br>
<br>
<br>
<br>
}<br>
<br>
<br>
if [ $# -eq 0 ]<br>
then<br>
TOTAL_TIME=1<br>
elif [ $1 == "-h" ]<br>
then<br>
disp_usage $0<br>
exit 0<br>
elif [ $1 == "--help" ]<br>
then<br>
disp_usage $0<br>
exit 0<br>
elif [ $1 == "-t" ]<br>
then<br>
TOTAL_TIME=65535<br>
elif [ $# -eq 1 ]<br>
then<br>
DEV_NAME=$1<br>
TOTAL_TIME=1<br>
elif [ $2 == "-t" ]<br>
then<br>
DEV_NAME=$1<br>
TOTAL_TIME=65535<br>
else<br>
DEV_NAME=$1<br>
TOTAL_TIME=$2<br>
fi<br>
<br>
echo "the Rate of Network, by dorainm, dora...@gmail.com"<br>
echo "-----------------------------------------------------"<br>
<br>
<br>
count=0<br>
while [ $count -lt $TOTAL_TIME ]<br>
do<br>
RX_FIRST=$(/sbin/ifconfig $DEV_NAME | awk '/RX bytes/{print $2}' | awk -F: '{print $2}')<br>
TX_FIRST=$(/sbin/ifconfig $DEV_NAME | awk '/RX bytes/{print $6}' | awk -F: '{print $2}')<br>
# echo "FIRST = $FIRST"<br>
sleep 1<br>
RX_SECOND=$(/sbin/ifconfig $DEV_NAME | awk '/RX bytes/{print $2}' | awk -F: '{print $2}')<br>
TX_SECOND=$(/sbin/ifconfig $DEV_NAME | awk '/RX bytes/{print $6}' | awk -F: '{print $2}')<br>
# echo "SECOND = $SECOND"<br>
((RX_FIRST=$RX_SECOND-$RX_FIRST))<br>
((TX_FIRST=$TX_SECOND-$TX_FIRST))<br>
<br>
<br>
if [ $RX_FIRST -gt 1048576 ]<br>
then<br>
RX_FIRST=$(echo "scale=3; $RX_FIRST / 1048576" | bc -l)<br>
printf "RX Rate = $HL_START%.3F$HL_END MB/S\t" $RX_FIRST<br>
elif [ $RX_FIRST -gt 1024 ]<br>
then<br>
RX_FIRST=$(echo "scale=3; $RX_FIRST / 1024" | bc -l)<br>
# ((RX_FIRST=($RX_FIRST/1024)))<br>
printf "RX Rate = $HL_START%.3F$HL_END KB/S\t" $RX_FIRST<br>
else<br>
printf "RX Rate = $HL_START$RX_FIRST$HL_END B/S \t"<br>
fi<br>
<br>
<br>
if [ $RX_SECOND -gt 1048576 ]<br>
then<br>
RX_SECOND=$(echo "scale=3; $RX_SECOND / 1048576" | bc -l)<br>
printf "Totle Bytes : $HL_START$RX_SECOND$HL_END MB\n"<br>
elif [ $RX_SECOND -gt 1024 ]<br>
then<br>
RX_SECOND=$(echo "scale=3; $RX_SECOND / 1024" | bc -l)<br>
printf "Totle Bytes : $HL_START$RX_SECOND$HL_END KB\n"<br>
else<br>
printf "Totle Bytes : $HL_START$RX_SECOND$HL_END B\n"<br>
fi<br>
<br>
<br>
if [ $TX_FIRST -gt 1048576 ]<br>
then<br>
TX_FIRST=$(echo "scale=3; $TX_FIRST / 1048576" | bc -l)<br>
printf "TX Rate = $HL_START%.3F$HL_END MB/S\t" $TX_FIRST<br>
elif [ $TX_FIRST -gt 1024 ]<br>
then<br>
TX_FIRST=$(echo "scale=3; $TX_FIRST / 1024" | bc -l)<br>
printf "TX Rate = $HL_START%.3F$HL_END KB/S\t" $TX_FIRST<br>
else<br>
printf "TX Rate = $HL_START$TX_FIRST$HL_END B/S \t"<br>
fi<br>
<br>
<br>
if [ $TX_SECOND -gt 1048576 ]<br>
then<br>
TX_SECOND=$(echo "scale=3; $TX_SECOND / 1048576" | bc -l)<br>
printf "Totle Bytes : $HL_START$TX_SECOND$HL_END MB\n"<br>
elif [ $TX_SECOND -gt 1024 ]<br>
then<br>
TX_SECOND=$(echo "scale=3; $TX_SECOND / 1024" | bc -l)<br>
printf "Totle Bytes : $HL_START$TX_SECOND$HL_END KB\n"<br>
else<br>
printf "Totle Bytes : $HL_START$TX_SECOND$HL_END B\n"<br>
fi<br>
<br>
<br>
((count=$count+1))<br>
echo "-----------------------------------------------------"<br>
done<br>
<br>
<br>
echo "All Done" </code></p> 这样测试似乎不是很准 确的,而且使用ifconfig已经很明显了。
页:
[1]
