美文网首页
2018-09-05 一个实时监听网络的流量的工具

2018-09-05 一个实时监听网络的流量的工具

作者: Seizens_Swift | 来源:发表于2018-09-05 21:24 被阅读0次

    首先放代码如下所示

    #!/bin/bash
    
    cp /proc/net/dev tmp_dev1
    sed -i '1,2d' tmp_dev1
    while(true);do
        sleep 1
        cp /proc/net/dev tmp_dev2
        sed -i '1,2d' tmp_dev2
        clear
        echo "*************************************************************************"
        awk 'NR==FNR{a[$1]=$2+$9} NR!=FNR{a[$1]=a[$1]-$2-$9} END{for(i in a) printf("%-15s current speed is %.2f Mb/s %.2f kb/s \n", i, a[i]/1024/1024, a[i]/1024)}' tmp_dev2 tmp_dev1
        echo "*************************************************************************"
        mv -f tmp_dev2 tmp_dev1
    done
    

    结果如下所示:

    *************************************************************************
    tunl0:          current speed is 0.00 Mb/s 0.00 kb/s 
    eth0:           current speed is 0.00 Mb/s 0.00 kb/s 
    ip6tnl0:        current speed is 0.00 Mb/s 0.00 kb/s 
    lo:             current speed is 0.00 Mb/s 0.00 kb/s 
    *************************************************************************
    

    所需知识要点

    Linux 内核提供了一种通过 /proc 文件系统,在运行时访问内核内部数据结构、改变内核设置的机制。由于系统的信息,如进程,是动态改变的,所以用户或应用程序读取proc文件时,proc文件系统是动态从系统内核读出所需信息并提交的。/proc文件系统中包含了很多目录,其中/proc/net/dev 保存了网络适配器及统计信息。

    root@803e41ac5ea4:~/tes# cat /proc/net/dev
    Inter-|   Receive                                                |  Transmit
     face |bytes    packets errs drop fifo frame compressed multicast|bytes    packets errs drop fifo colls carrier compressed
      eth0: 26249010   18636    0    0    0     0          0         0   409951    7300    0    0    0     0       0          0
     tunl0:       0       0    0    0    0     0          0         0        0       0    0    0    0     0       0          0
    ip6tnl0:       0       0    0    0    0     0          0         0        0       0    0    0    0     0       0          0
        lo:       0       0    0    0    0     0          0         0        0       0    0    0    0     0       0          0
    

    最左边的表示接口的名字,Receive表示收包,Transmit表示发送包;

    • bytes表示收发的字节数;
    • packets表示收发正确的包量;
    • errs表示收发错误的包量;
    • drop表示收发丢弃的包量;

    则数据流量速度取得是发送和接收的字节数的量。取的间隔1s计算一次。

    流程图如下

    待更新。。。。。。

    相关文章

      网友评论

          本文标题:2018-09-05 一个实时监听网络的流量的工具

          本文链接:https://www.haomeiwen.com/subject/nouzwftx.html