要查看 Connection 可以用 netstat 來查看目前所有的 Connection,但做為系統管理人員小弟說過要有懶惰的美德,凡事不要自己來,讓系統自動化才是最明確的決定。
目標是希望可以定時監控 80 Port 的 Connection 數量
撰寫一隻批次檔,用到 Windows 的 netstat ,還有 Linux 的 find 來區隔來源及目的
範例1;篩選出 TCP 中 192.168.10.99 這張網卡的 80port
netstat -anp tcp | find "192.168.10.99:80"
C:\Users\Administrator>netstat -anp tcp | find "192.168.10.99:80"
TCP 192.168.10.99:80 192.168.100.1:39082 ESTABLISHED
TCP 192.168.10.99:80 192.168.100.1:39084 ESTABLISHED
TCP 192.168.100.1:39082 192.168.10.99:80 ESTABLISHED
TCP 192.168.100.1:39084 192.168.10.99:80 ESTABLISHED
範例2;將 範例1 篩選出的結果計算數量
netstat -anp tcp | find "192.168.10.99:80" /c
4
如果系統是 80 port 出口的話,與 user 端就會有 輸入及輸出兩筆 Connection。
雖然懶人可以用除以2 的方式來算出數量,但心裡還是覺得有出錯的機會。
由於找不到 Windows 的篩選 command ,先用了 Linux 的 cut 加入本機源的判斷。
※要在 Windows 用 Linux 的 command 可以下載 coreutils ,安裝 coreutils 你會需要擁有 libintl3.dll、libiconv2.dll ,請丟到與 cut.exe 相同目錄下。
建立 ConnectionMonitor.bat 批次檔
set BINPATH=D:\coreutils-5.3.0-bin\bin
echo | set /p = %date% >> D:\log.txt
netstat -anp tcp | find "192.168.10.99:80" | %BINPATH%\cut -d " " -f 7 | find "192.168.10.99:80" /c >> D:\log.txt
所呈現的執行結果會是以下
201410310100 4
echo | set /p = %date% 是為了判讀當下執行的時間, set /p 是不希望 echo 有段行
cut -d " " -f 7 是判別到 192.168.10.99:80 之前有 7 格空格,這是比較原始的方法,如果網友有更好的方法也可以提出!
最後加入工作排程,並寫入 Log,一段時間後就可以得知 Connection 的狀況囉!!
Orignal From: 用 netstat 監控 connection 數量
沒有留言:
張貼留言