SHELL 获取网卡流量

SHELL 获取网卡流量

1. 版本一

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
#!/bin/bash

#使用方法
usage()
{
echo "useage: $0 ethname intervel"
exit 0
}

#网口配置
if [ $# -gt 1 ];then
ethname=$1
num=`ifconfig|grep ${ethname}|wc -l`
if [ $num -gt 0 ];then
ethname=$1
else
echo "Can't find $ethname,Please Check"
exit 1
fi
fi

#时间配置
intervel=1
if [ $# -gt 0 ]; then
interval=$2
test=`expr "$interval" \* 0`
if [ "$test" != "0" ]; then
echo "Invalid <interval> param '$interval' . It should be a integer number. Usage: $0 ethname intervel"
exit -1
fi
if [ $interval -lt 1 ]; then
echo "Invalid <interval> param '$interval' . It should be > 0 (seconds). Usage: $0 ethname intervel"
exit -1
fi
fi

#函数判断
if [ $# -ne 2 ]
then
usage
fi

echo "$0 is starting,Device is $1,Intervel is $2"
echo -e "\n"

typeset Rev old_Rev

eth=$1
intervel=$2

old_Rev=`cat /proc/net/dev|grep $eth| awk '{print $1}'| awk -F : '{print $2}'`
old_Send=`cat /proc/net/dev|grep $eth|awk '{print $9}'`
#echo "old_Rev is $old_Rev"
#echo "Old_send is $old_Send"

while true
do
sleep $intervel

Rev=`cat /proc/net/dev|grep $eth|awk '{print $1}'|awk -F : '{print $2}'`
Send=`cat /proc/net/dev|grep $eth|awk '{print $9}'`
#echo "Rev is $Rev"
#echo "Send is $Send"

diff_1=`awk -v Rev=$Rev -v old_Rev=$old_Rev -v intervel=$intervel 'BEGIN{printf "Receive is %6.2f", ( Rev - old_Rev ) / 1024 / 1024 / intervel * 8}'`

diff_2=`awk -v Send=$Send -v old_Send=$old_Send -v intervel=$intervel 'BEGIN{printf "Send is %6.2f", ( Send - old_Send ) / 1024 / 1024 / intervel * 8}'`

echo "`date +'%Y-%m-%d %H:%M:%S'` Speed: IN ${diff_1} mbps OUT ${diff_2} mbps"

old_Rev=$Rev
old_Send=$Send
done

2. 版本二

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#!/bin/bash
#network
#by rocdk890
while : ; do
time=`date +%m"-"%d" "%k":"%M`
day=`date +%m"-"%d`
port=`ifconfig |grep em|awk '{print $1}'`
rx_before=`ifconfig $port|sed -n "8"p|awk '{print $2}'|cut -c7-`
tx_before=`ifconfig $port|sed -n "8"p|awk '{print $6}'|cut -c7-`
sleep 2
rx_after=`ifconfig $port|sed -n "8"p|awk '{print $2}'|cut -c7-`
tx_after=`ifconfig $port|sed -n "8"p|awk '{print $6}'|cut -c7-`
rx_result=$[(rx_after-rx_before)/256]
tx_result=$[(tx_after-tx_before)/256]
echo "$time Now_In_Speed: "$rx_result"kbps Now_OUt_Speed: "$tx_result"kbps"
sleep 2
done

本文标题:SHELL 获取网卡流量

文章作者:shuke

发布时间:2020年04月20日 - 15:04

最后更新:2020年04月20日 - 15:04

原始链接:https://shuke163.github.io/2020/04/20/SHELL-%E8%8E%B7%E5%8F%96%E7%BD%91%E5%8D%A1%E6%B5%81%E9%87%8F/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。

-------------本文结束感谢您的阅读-------------

本文标题:SHELL 获取网卡流量

文章作者:shuke

发布时间:2020年04月20日 - 15:04

最后更新:2020年04月20日 - 15:04

原始链接:https://shuke163.github.io/2020/04/20/SHELL-%E8%8E%B7%E5%8F%96%E7%BD%91%E5%8D%A1%E6%B5%81%E9%87%8F/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。

0%