提示: /proc/net/dev 文件显示的数字就是网络总流量,单位是B(字节)。 可以用当前时刻的数字减去上一秒的数字来求出每秒的网络流量。单位根据实际情况显示为KB或者MB。 而实时显示,只能使用while 做死循环,而且显示结果要一直在屏幕的第一行,可以使用clear实现。
参考脚本:
{{{密码回复可见}}}
参考脚本:
{{{密码回复可见}}}
0
while :
do
rc=`cat /proc/net/dev|grep eth0|awk '{print $2}'`
tc=`cat /proc/net/dev|grep eth0|awk '{print $10}'`
sleep 1
rc2=`cat /proc/net/dev|grep eth0|awk '{print $2}'`
tc2=`cat /proc/net/dev|grep eth0|awk '{print $10}'`
rjg=$[rc2-rc]
tjg=$[tc2-tc]
echo "receive=$rjg transmit=$tjg"
sleep 1
clear
done
do
rc=`cat /proc/net/dev|grep eth0|awk '{print $2}'`
tc=`cat /proc/net/dev|grep eth0|awk '{print $10}'`
sleep 1
rc2=`cat /proc/net/dev|grep eth0|awk '{print $2}'`
tc2=`cat /proc/net/dev|grep eth0|awk '{print $10}'`
rjg=$[rc2-rc]
tjg=$[tc2-tc]
echo "receive=$rjg transmit=$tjg"
sleep 1
clear
done
0
#!/bin/bash
#
#提示: /proc/net/dev 文件显示的数字就是网络总流量,单位是B(字节)。 可以用当前时刻的数字减去上一秒的数字来求出每秒的网络流量。单位根据实际情况显示为KB或者MB。 而实时显示,只能使用while 做死循环,而且显示结果要一直在屏幕的第一行,可以使用clear实现。
a=2
int1=1024
int2=$((1024*1024))
while [ $a -gt 1 ]
do
a=`cat /proc/net/dev|grep eth0|awk -F ":" '{print $2}'|awk '{print $1}'`
sleep 1
clear
b=`cat /proc/net/dev|grep eth0|awk -F ":" '{print $2}'|awk '{print $1}'`
c=$(($b-$a))
if [ $c -le $int1 ]
then
echo $c"b"
elif [ $c -gt $int1 ] && [ $c -le $int2 ]
then
E=$(($c/int1))
echo $E"kb"
elif [ $c -gt $int2 ]
then
E=$(($c/int2))
echo $E"mb"
fi
done
#
#提示: /proc/net/dev 文件显示的数字就是网络总流量,单位是B(字节)。 可以用当前时刻的数字减去上一秒的数字来求出每秒的网络流量。单位根据实际情况显示为KB或者MB。 而实时显示,只能使用while 做死循环,而且显示结果要一直在屏幕的第一行,可以使用clear实现。
a=2
int1=1024
int2=$((1024*1024))
while [ $a -gt 1 ]
do
a=`cat /proc/net/dev|grep eth0|awk -F ":" '{print $2}'|awk '{print $1}'`
sleep 1
clear
b=`cat /proc/net/dev|grep eth0|awk -F ":" '{print $2}'|awk '{print $1}'`
c=$(($b-$a))
if [ $c -le $int1 ]
then
echo $c"b"
elif [ $c -gt $int1 ] && [ $c -le $int2 ]
then
E=$(($c/int1))
echo $E"kb"
elif [ $c -gt $int2 ]
then
E=$(($c/int2))
echo $E"mb"
fi
done
0
刚开始自己写的,只考虑求的值,没考虑循环
求值的方法是先求得单位大小,然后对比单位大小
后来参考其他同学的先对比大小,然后在换算为单位
但是这个求得值是流量,并非带宽,如果换算带宽还要*8
但是和iftop 获得的值还是有区别,就算*8以后 不知道怎么回事
求值的方法是先求得单位大小,然后对比单位大小
- #!/bin/bash
- #监控网卡实时流量
- rx=`cat /proc/net/dev |grep eth0 |awk '{print $1}'|awk -F: '{print $2}'`
- tx=`cat /proc/net/dev |grep eth0 |awk '{print $9}'`
- rx1=$(( $rx / 1024 ))
- rx2=$(( $rx1 /1024 ))
- tx1=$(( $tx / 1024 ))
- tx2=$(( $tx1 /1024 ))
- sleep 1
- rx3=`cat /proc/net/dev |grep eth0 |awk '{print $1}'|awk -F: '{print $2}'`
- tx3=`cat /proc/net/dev |grep eth0 |awk '{print $9}'`
- rx4=$(( $rx3 / 1024 ))
- rx5=$(( $rx4 /1024 ))
- tx4=$(( $tx3 / 1024 ))
- tx5=$(( $tx4 /1024 ))
- rx6=$(( $rx5 - $rx2 ))
- tx6=$(( $tx5 - $tx2 ))
- rx7=$(( $rx4 - $rx1 ))
- tx7=$(( $tx4 - $tx1 ))
- if [ $rx6 -le 0 ]; then
- echo $rx7
- else
- echo $rx6
- fi
- if [ $tx6 -le 0 ]; then
- echo $tx7
- else
- echo $tx6
- fi
后来参考其他同学的先对比大小,然后在换算为单位
- #!/bin/bash
- a=2
- int1=1024
- int2=$((1024*1024))
- while [ $a -gt 1 ]
- do
- a=`cat /proc/net/dev|grep eth0|awk -F ":" '{print $2}'|awk '{print $1}'`
- a1=`cat /proc/net/dev |grep eth0 |awk '{print $9}'`
- sleep 1
- clear
- b=`cat /proc/net/dev|grep eth0|awk -F ":" '{print $2}'|awk '{print $1}'`
- b1=`cat /proc/net/dev |grep eth0 |awk '{print $9}'`
- c=$(($b-$a))
- c1=$(($b1-$a1))
- if [ $c -le $int1 ]
- then
- echo RX:$c"b"
- elif [ $c -gt $int1 ] && [ $c -le $int2 ]
- then
- E=$(($c/int1))
- echo RX:$E"kb"
- elif [ $c -gt $int2 ]
- then
- E=$(($c/int2))
- echo RX:$E"mb"
- fi
- if [ $c1 -le $int1 ]
- then
- echo TX:$c1"b"
- elif [ $c1 -gt $int1 ] && [ $c1 -le $int2 ]
- then
- E1=$(($c1/int1))
- echo TX:$E1"kb"
- elif [ $c1 -gt $int2 ]
- then
- E1=$(($c1/int2))
- echo TX:$E1"mb"
- fi
- done
但是这个求得值是流量,并非带宽,如果换算带宽还要*8
但是和iftop 获得的值还是有区别,就算*8以后 不知道怎么回事
0
#! /bin/bash
#Auth: Cityzen Wang
#Date: 2017-05-04
#Scriptes: Monitoring Network Traffic real time.
while :
do
a=`cat /proc/net/dev | grep eth0| awk '{print $1}'| awk -F ':' '{print $2}'`
sleep 1
b=`cat /proc/net/dev | grep eth0| awk '{print $1}'| awk -F ':' '{print $2}'`
c=$[$b-$a]
clear
echo "Network Traffic is $c"
done
编辑回复