2018-09-05 一個(gè)實(shí)時(shí)監(jiān)聽網(wǎng)絡(luò)的流量的工具

首先放代碼如下所示

#!/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

結(jié)果如下所示:

*************************************************************************
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 
*************************************************************************

所需知識(shí)要點(diǎn)

Linux 內(nèi)核提供了一種通過 /proc 文件系統(tǒng),在運(yùn)行時(shí)訪問內(nèi)核內(nèi)部數(shù)據(jù)結(jié)構(gòu)、改變內(nèi)核設(shè)置的機(jī)制。由于系統(tǒng)的信息,如進(jìn)程,是動(dòng)態(tài)改變的,所以用戶或應(yīng)用程序讀取proc文件時(shí),proc文件系統(tǒng)是動(dòng)態(tài)從系統(tǒng)內(nèi)核讀出所需信息并提交的。/proc文件系統(tǒng)中包含了很多目錄,其中/proc/net/dev 保存了網(wǎng)絡(luò)適配器及統(tǒng)計(jì)信息。

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表示發(fā)送包;

  • bytes表示收發(fā)的字節(jié)數(shù);
  • packets表示收發(fā)正確的包量;
  • errs表示收發(fā)錯(cuò)誤的包量;
  • drop表示收發(fā)丟棄的包量;

則數(shù)據(jù)流量速度取得是發(fā)送和接收的字節(jié)數(shù)的量。取的間隔1s計(jì)算一次。

流程圖如下

待更新。。。。。。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 一、Python簡(jiǎn)介和環(huán)境搭建以及pip的安裝 4課時(shí)實(shí)驗(yàn)課主要內(nèi)容 【Python簡(jiǎn)介】: Python 是一個(gè)...
    _小老虎_閱讀 6,363評(píng)論 0 10
  • feisky云計(jì)算、虛擬化與Linux技術(shù)筆記posts - 1014, comments - 298, trac...
    不排版閱讀 4,393評(píng)論 0 5
  • 如果你看完書中的所有例子,你很可能已經(jīng)做完你的實(shí)驗(yàn)和在已經(jīng)越獄的iPhone上的研究。因?yàn)楹驮S多人一樣,幾乎所有的...
    fishmai0閱讀 17,444評(píng)論 2 42
  • Linux系統(tǒng)一般有4個(gè)主要部分:內(nèi)核、shell、文件系統(tǒng)和應(yīng)用程序。 內(nèi)核、shell和文件系統(tǒng)一起形成了基本...
    請(qǐng)愛護(hù)小動(dòng)物閱讀 3,278評(píng)論 0 22
  • 了解專業(yè):真是不了解不知道,一了解嚇一跳,我上大學(xué)之前那對(duì)財(cái)務(wù)管理這個(gè)專業(yè)真的是一點(diǎn)也沒有了解,而且也不知道其實(shí)其...
    財(cái)一滕瓊瑤閱讀 492評(píng)論 0 0

友情鏈接更多精彩內(nèi)容