乙個統計伺服器網路流量的小程式

2021-09-08 06:54:30 字數 3375 閱讀 1962

因為工作需要,要統計一下伺服器的網路吞吐量,並且出乙個圖表。在搜尋網路吞吐量軟體時候,看到這篇文章,於是決定用指令碼來實現這個功能。bigtall在原文的啟發下,做了一些修改,去掉了對unix工具的依賴,把它變成了乙個純的批處理檔案。希望能給有需要的人幫助。

1@echo

off2

:args

3rem

處理引數4if

"%1"==

""goto

help56

setstopfile="

%temp%\netflow.stop"7

if"%1"

=="stop

"goto

stop8if

"%1"==

"start

"goto

start

9goto

help

1011

:start

12rem

繼續分析start引數

13set

outfile=14

setoutcon=1

15if"%2

"==""goto

main

16set

outcon=17

if"%2"

=="console

"set

outcon=1

18if

not"%2"

=="console

"set

outfile=%2

19if"%3

"=="console

"set

outcon=1

20if

"%outfile%"==

""if

not"%3"

=="console

"set

outfile=%3

2122

:main

23echo

本程式每5秒統計一下網絡卡的流量

,ctrl

+c退出

2425

rem刪除stop記錄

26if

exist

%stopfile% 

del/q /

f %stopfile%

27rem

首次流量記錄,初始化

28echo

wscript

.sleep

(5000

);>

sleep.js

29set

curdate1=%

date%30

setcurdate

=%curdate1:~0,

10%31set

curdate1=32

33if

"%outfile%"==

""goto

label2

34if

notexist

%outfile% 

echo日期,

時間,接收總位元組

,傳送總位元組

,本次接收位元組

,本次傳送位元組

>>

%outfile%

35:label2

36rem

其中字段內容為:日期,時間,接受總位元組,傳送總位元組,本次接受位元組,本次傳送位元組

37for/f 

"tokens=1,2,3

"%%i in 

('netstat -e ^| findstr 位元組')do

setprevrecv

=%%j&&

setprevsend

=%%k

38:begin

39if

exist

%stopfile% 

goto

mainexit

40for/f 

"tokens=1,2,3

"%%i in 

('netstat -e ^| findstr 位元組')do

setrecv

=%%j&&

setsend

=%%k

41set

/a nrecv

=%recv:~-9% - %prevrecv

:~-9%42

set/

a nsend

=%send

:~-9

% - %prevsend

:~-9%43

setprevrecv

=%recv%

44set

prevsend

=%send%

45if

"%outfile%"==

""goto

label3

46echo

%curdate%,%

time%,

%recv%

,%send%

,%nrecv%

,%nsend% 

>>

%outfile%

47:label3

48if

"%outcon%"==

"1"echo

%curdate%,%

time%,

%recv%

,%send%

,%nrecv%

,%nsend%

49cscript 

//b 

//nologo sleep.js

50goto

begin

51:mainexit

52if

exist

%stopfile% 

del/q /

f %stopfile%

53if

exist

sleep

.js 

del/q /

f sleep.js

54goto

end55

56:stop

57echo

通知傳送完成

58echo

.>

%stopfile%

59goto

end60

61:help

62echo

網路流量統計

63echo

usage: netflow [

start

^|stop] [console] [logfile]

64echo

start

開始執行,並輸出到指定檔案

65echo

stop    停止統計

66echo

console 執行輸出時,輸出乙份到控制台

67echo

logfile 執行輸出時,輸出乙份到指定檔案

68goto

end69

70:end

71

乙個簡單的網路流量統計程式 z

前面講到,register netdev首先為網路裝置介面分配乙個名稱,然後將dev插入到乙個叫做dev base的網路裝置全域性鍊錶中。由此我們不難想到,通過訪問dev base,就可以遍歷到系統中的所有網路裝置,而每乙個網路裝置介面都有乙個net device結構來表示。該結構中有乙個成員函式指...

堅持每天乙個小程式(web伺服器)

剛接觸網路不深,寫了個基本的web伺服器,由於剛找到工作,也只能在週末把文章整理下了。實現乙個web伺服器步驟 第一步,我們要做的就是指定好相應的埠和網頁存放目錄 我設定好的預設目錄是程式存放的目錄裡的html 資料夾裡。埠的話如果你在執行的時候指定的話,就在執行時加引數,否則預設是8000.102...

TCPAPI網路通訊 乙個伺服器對乙個

伺服器 在winsockseverdlg.h中新增變數 public int getcount void sendtoall socket s,char buff socket m sock cwinsockseverdlg socket msgsock 50 int addlen sockaddr...