因為工作需要,要統計一下伺服器的網路吞吐量,並且出乙個圖表。在搜尋網路吞吐量軟體時候,看到這篇文章,於是決定用指令碼來實現這個功能。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...