使用shell脚本计算Linux网卡流量,方法中最关键点:
复制代码 代码如下:
ifconfig $eth_name | grep bytes | awk '{print $6}' | awk -F : '{print $2}'
通过ifconfig eth0|grep bytes 得到输入输出的流量。
复制代码 代码如下:
/@rac2=>dd2$ifconfig eth0|grep bytes
RX bytes:1638005313300 (1.4 TiB) TX bytes:3408060482049 (3.0 TiB)
再将结果通过awk 得出所要的字段值。
固定时间得到这些值,在写个循环计算一下就能得到网卡流量。
完整代码:
代码一:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
#!/bin/bash # 统计网卡流量 # link:www.tuohang.net # date:2013/2/26 n=10 date rm -rf /tmp/ifconfig_log while (( $n >= 0 )) do n=$(($n - 1)); date >> /tmp/ifconfig_log ifconfig eth1 >> /tmp/ifconfig_log sleep 1 done grep "RX bytes:" /tmp/ifconfig_log | awk -F "[:| ]" '{print $13}' | awk 'BEGIN{tmp=$1}{if(FNR > 1)print $1-tmp}{tmp=$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
|
#!/bin/bash if [ -n "$1" ]; then eth_name=$1 else eth_name= "eth0" fi i=0 send_o=` ifconfig $eth_name | grep bytes | awk '{print $6}' | awk -F : '{print $2}' ` recv_o=` ifconfig $eth_name | grep bytes | awk '{print $2}' | awk -F : '{print $2}' ` send_n=$send_o recv_n=$recv_o while [ $i - le 100000 ]; do send_l=$send_n recv_l=$recv_n sleep 1 send_n=` ifconfig $eth_name | grep bytes | awk '{print $6}' | awk -F : '{print $2}' ` recv_n=` ifconfig $eth_name | grep bytes | awk '{print $2}' | awk -F : '{print $2}' ` i=` expr $i + 1` send_r=` expr $send_n - $send_l` recv_r=` expr $recv_n - $recv_l` total_r=` expr $send_r + $recv_r` send_ra=` expr \( $send_n - $send_o \) / $i` recv_ra=` expr \( $recv_n - $recv_o \) / $i` total_ra=` expr $send_ra + $recv_ra` sendn=` ifconfig $eth_name | grep bytes | awk -F \( '{print $3}' | awk -F \) '{print $1}' ` recvn=` ifconfig $eth_name | grep bytes | awk -F \( '{print $2}' | awk -F \) '{print $1}' ` clear echo "==================================================" echo "Last second : Send rate: $send_r Bytes/sec Recv rate: $recv_r Bytes/sec Total rate: $total_r Bytes/sec" echo "Average value: Send rate: $send_ra Bytes/sec Recv rate: $recv_ra Bytes/sec Total rate: $total_ra Bytes/sec" echo "Total traffic after startup: Send traffic: $sendn Recv traffic: $recvn" echo "==================================================" done |
代码三:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
#!/bin/bash # Link: www.51bbo.com ### while : do Time=` date +%F” “%T.%N` rx_before=` ifconfig eth0 | sed -n 8p | awk ‘{print $2}'| cut -c7-` tx_before=` ifconfig eth0 | sed -n 8p | awk ‘{print $6}'| cut -c7-` sleep 2 rx_after=` ifconfig eth0 | sed -n 8p | awk ‘{print $2}'| cut -c7-` tx_after=` ifconfig eth0 | sed -n 8p | awk ‘{print $6}'| cut -c7-` rx_result=$[(rx_after – rx_before) /512 ] tx_result=$[(tx_after – tx_before) /512 ] echo -e “$Time nNow_In_Speed: ‘$rx_result 'Kbps Now_OUt_Speed: ‘$tx_result' Kbpsn” done |