天天看點

PowerShell統計本地的網絡連接配接(CMD吐資料互訪)

需求:想把netstat-an吐出來的資料統計一下,看看本地連外地有多少個,外地連本地有多少個。協定分類什麼的。

注意:因為netstat是cmd的指令,盡管在PowerShell下可以運作這個指令,但是吐出來的資料是沒辦法在加工的,它不是PowerShell原生指令。是以解決方法是把資料吐到一個csv檔案中,然後針對CSV進行加工,最後得到需要的統計資訊。

首先來一個中文版的,經過測試,需要PowerShell3.0以上,也就是Windows Server 2012以上的版本(windows8以上也可以)。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

<code>#Powered By kukisama   http://jiushu.blog.51cto.com/</code>

<code>netstat -an </code><code>|Out</code><code>-File</code> <code>-Encoding utf8 D:\3456.csv</code>

<code>$files</code> <code>= (</code><code>Get-Childitem</code> <code>d:\3456.csv).pspath</code>

<code>$content</code> <code>= </code><code>get-content</code> <code>$files</code>

<code>clear-content</code> <code>$files</code>

<code>add-Content</code> <code>$files</code> <code>-Value </code><code>"協定,本地IP位址,端口,對端IP位址,對端端口,狀态"</code>

<code>foreach</code> <code>(</code><code>$line</code> <code>in</code> <code>$content</code> <code>-ne</code> <code>"活動連接配接"</code> <code>-ne</code> <code>"  協定  本地位址          外部位址        狀态"</code><code>)</code>

<code>   </code><code>{</code>

<code>   </code><code>$liner</code> <code>= </code><code>$line</code><code>.Replace(</code><code>"[::1]"</code><code>,</code><code>"本地"</code><code>);</code>

<code>   </code><code>$line</code> <code>= </code><code>$liner</code>

<code>   </code><code>$liner</code> <code>= </code><code>$line</code><code>.Replace(</code><code>"[::]"</code><code>,</code><code>"本地"</code><code>);</code>

<code>   </code><code>$line</code> <code>= </code><code>$liner</code> <code>-replace</code><code>(</code><code>"\s{1,}"</code> <code>,</code><code>","</code><code>)</code>

<code>   </code><code>$liner</code> <code>= </code><code>$line</code>

<code>   </code><code>$line</code> <code>= </code><code>$liner</code> <code>-replace</code><code>(</code><code>":{1,}"</code> <code>,</code><code>" "</code><code>)</code>

<code>   </code><code>$liner</code> <code>= </code><code>$line</code><code>.Replace(</code><code>",TCP"</code><code>,</code><code>"TCP"</code><code>)</code>

<code>   </code><code>$liner</code> <code>= </code><code>$line</code><code>.Replace(</code><code>",UDP"</code><code>,</code><code>"UDP"</code><code>)</code>

<code>   </code><code>$liner</code> <code>= </code><code>$line</code><code>.Replace(</code><code>"127.0.0.1"</code><code>,</code><code>"本地"</code><code>)</code>

<code>   </code><code>$liner</code> <code>= </code><code>$line</code><code>.Replace(</code><code>"0.0.0.0"</code><code>,</code><code>"本地"</code><code>)</code>

<code>   </code><code>$liner</code> <code>= </code><code>$line</code><code>.Replace(</code><code>"LISTENING"</code><code>,</code><code>"監聽"</code><code>)</code>

<code>   </code><code>$liner</code> <code>= </code><code>$line</code><code>.Replace(</code><code>"ESTABLISHED"</code><code>,</code><code>"等待"</code><code>)</code>

<code>   </code><code>$liner</code> <code>= </code><code>$line</code><code>.Replace(</code><code>"TIME_WAIT"</code><code>,</code><code>"已建立連接配接"</code><code>)</code>

<code>   </code><code>$liner</code> <code>= </code><code>$line</code><code>.Replace(</code><code>"CLOSE_WAIT"</code><code>,</code><code>"關閉等待"</code><code>)</code>

<code>   </code><code>$liner</code> <code>= </code><code>$line</code><code>.Replace(</code><code>"SYN_SENT"</code><code>,</code><code>"同步發送"</code><code>)</code>

<code>   </code><code>add-Content</code> <code>$files</code> <code>-Value </code><code>$liner</code> <code>-Encoding </code><code>Default</code>

<code>      </code><code>} </code>

<code>$bb</code> <code>= </code><code>Import-Csv</code> <code>-Path d:/3456.csv -Encoding </code><code>Default</code>

<code>echo </code><code>"====================================="</code>

<code>echo </code><code>"以下為協定計數"</code>

<code>$bb</code><code>| </code><code>Group-Object</code> <code>–Property:協定</code><code>|select</code> <code>Name,Count</code><code>|sort</code> <code>-Property count</code>

<code>echo </code><code>"以下為您本地IP連接配接外端位址的統計資料"</code>

<code>$bb</code><code>| </code><code>Group-Object</code> <code>–Property:本地IP位址</code><code>|select</code> <code>Name,Count</code><code>|sort</code> <code>-Property count</code>

<code>echo </code><code>"以下為外端位址連接配接您本地IP的統計資料"</code>

<code>$bb</code><code>| </code><code>Group-Object</code> <code>–Property:對端IP位址</code><code>|select</code> <code>Name,Count</code><code>|sort</code> <code>-Property count</code>

<code>echo </code><code>"以下為狀态計數"</code>

<code>$bb</code><code>| </code><code>Group-Object</code> <code>–Property:狀态</code><code>|select</code> <code>Name,Count</code><code>|sort</code> <code>-Property count</code>

再來一個英文版的,因為在PowerShell2.0 也就是Windows Server 2008 R2中,是沒有-Encoding Default參數的,是以要删了它,改成全英文的描述和說明。是以用中文裝逼是失敗的了。是以建議大家也盡量更新PowerShell到4.0(Windows Server 2008 R2是可以更新PowerShell的)

這裡要說明一下的是,該文檔隻适合中文和英文系統,其他語種你需要修改第7行,增加更多-ne的屬性。

<code>netstat -an </code><code>|Out</code><code>-File</code>  <code>D:\3456.csv</code>

<code>add-Content</code> <code>$files</code> <code>-Value </code><code>"proto,localAddress,duankou,duiduanip,duiduanduanou,zhuangtai"</code>

<code>foreach</code> <code>(</code><code>$line</code> <code>in</code> <code>$content</code> <code>-ne</code> <code>"active connections"</code> <code>-ne</code> <code>"  proto  local address          foreign address         state"</code> <code>-ne</code> <code>"活動連接配接"</code> <code>-ne</code> <code>"  協定  本地位址          外部位址        狀态"</code><code>)</code>

<code>   </code><code>$liner</code> <code>= </code><code>$line</code><code>.Replace(</code><code>"[::1]"</code><code>,</code><code>"local"</code><code>);</code>

<code>   </code><code>$liner</code> <code>= </code><code>$line</code><code>.Replace(</code><code>"[::]"</code><code>,</code><code>"local"</code><code>);</code>

<code>   </code><code>$liner</code> <code>= </code><code>$line</code><code>.Replace(</code><code>"127.0.0.1"</code><code>,</code><code>"local"</code><code>)</code>

<code>   </code><code>$liner</code> <code>= </code><code>$line</code><code>.Replace(</code><code>"0.0.0.0"</code><code>,</code><code>"local"</code><code>)</code>

<code>  </code><code>&lt;# $liner = $line.Replace("LISTENING","監聽")</code>

<code>   </code><code>$line = $liner</code>

<code>   </code><code>$liner = $line.Replace("ESTABLISHED","等待")</code>

<code>   </code><code>$liner = $line.Replace("TIME_WAIT","已建立連接配接")</code>

<code>   </code><code>$liner = $line.Replace("CLOSE_WAIT","關閉等待")</code>

<code>   </code><code>$liner = $line.Replace("SYN_SENT","同步發送")#&gt;</code>

<code>   </code><code>add-Content</code> <code>$files</code> <code>-Value </code><code>$liner</code> 

<code>$files</code>

<code>$bb</code> <code>= </code><code>Import-Csv</code> <code>-Path d:\3456.csv </code>

<code>$bb</code><code>| </code><code>Group-Object</code> <code>–Property:proto</code><code>|select</code> <code>Name,Count</code><code>|sort</code> <code>-Property count</code>

<code>$bb</code><code>| </code><code>Group-Object</code> <code>–Property:localAddress</code><code>|select</code> <code>Name,Count</code><code>|sort</code> <code>-Property count</code>

<code>$bb</code><code>| </code><code>Group-Object</code> <code>–Property:duiduanip</code><code>|select</code> <code>Name,Count</code><code>|sort</code> <code>-Property count</code>

<code>$bb</code><code>| </code><code>Group-Object</code> <code>–Property:zhuangtai</code><code>|select</code> <code>Name,Count</code><code>|sort</code> <code>-Property count</code>

輸出結果如下

<a href="http://s3.51cto.com/wyfs02/M02/6E/BB/wKiom1WD3vfz5htzAAFCKGwfCSs330.jpg" target="_blank"></a>

本文轉自 九叔 51CTO部落格,原文連結:http://blog.51cto.com/jiushu/1663669,如需轉載請自行聯系原作者

繼續閱讀