计算网卡流量

#!/bin/bash

if [ $# -ne 2 ];then
    echo -e "\e[1;31mUsage:\t\t./net.sh device time(second)\e[0m"
    echo -e "\e[1;31mExample:\t./net.sh eth0 2\e[0m"
    exit 1
fi
time=$2
old_in=$(awk -v dev=$1 '{if($0~dev)print $2}' /proc/net/dev)
old_out=$(awk -v dev=$1 '{if($0~dev)print $10}' /proc/net/dev)

while true
do
    sleep $time
    dev_in=$(awk -v dev=$1 '{if($0~dev)print $2}' /proc/net/dev)
    dev_out=$(awk -v dev=$1 '{if($0~dev)print $10}' /proc/net/dev)
    dif_in=$((((dev_in-old_in)/time/1000)*8))
    dif_out=$((((dev_out-old_out)/time/1000)*8))
    old_in=$dev_in
    old_out=$dev_out
    echo -e "\e[1;32mIn:$dif_in kb/s Out:$dif_out kb/s\e[0m"
done

 用perl写了个,可以输出所有网卡的流量,写的很糙,格式输出不好看

#!/usr/bin/perl -w
use strict;
my $dev_file = '/proc/net/dev';
my $time = 2;
if(!open ETH_DEV,'<',$dev_file) {die "Cannot open $dev_file\n";}

sub get_dev_info{
    my @dev_info;
    while(<ETH_DEV>){
        if(/[0-9]+/){
            chomp;
            my @line = split(/:/);
            my $dev = $line[0];
            @line = split(/\s+/,$line[1]);
            push@dev_info, ($dev,$line[1],$line[9]);
        }
    }
    seek(ETH_DEV,0,0);
    return @dev_info;
}
my @dev_info_old = get_dev_info;
while(1){
    sleep $time;
    my $i = 0;
    #my $dev_sum = 0;
    my @dev_info_new = get_dev_info;
    my @result;
    foreach  (@dev_info_new){
        $i++;
        if($i%3==1){
    #       $dev_sum++;
            my $diff_in = ($dev_info_new[$i]-$dev_info_old[$i])/$time;
            my $diff_out = ($dev_info_new[$i+1]-$dev_info_old[$i+1])/$time;
            push @result, ($_."\t","In: ".$diff_in."byte/s\t","Out: ".$diff_out."byte/s\t");
        }
    }
    @dev_info_old = @dev_info_new;
#   print "DEVICE\tIN\tOUT\t"x$dev_sum."\n";
    print "@result"."\n";
}
close ETH_DEV;

 

转载于:https://www.cnblogs.com/sunsweet/p/3139469.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值