2016年3月21日 星期一

netstat用法

windows的netstat功能較弱
netstat -tn 目前連線
netstat -ano | find /I "listening" 目前本機listen的情況(netstat -o顯示pid,find類似unix的grep,find /I忽略大小寫)
===========================================================

查看本地端連結遠端的IP
netstat -na|grep ESTABLISHED|awk '{print $5}'|sort|uniq -c|sort -r -n
netstat -an --inet --inet6 (ipv4或ipv6)

uniq重覆資料只算一筆;uniq -c 重覆資料只算一筆並計算次數
sort [-fbMnrtuk] [file or stdin]
選項與參數:
-f  :忽略大小寫的差異,例如 A 與 a 視為編碼相同;
-b  :忽略最前面的空白字元部分;
-M  :以月份的名字來排序,例如 JAN, DEC 等等的排序方法;
-n  :使用『純數字』進行排序(預設是以文字型態來排序的);
-r  :反向排序
-u  :就是 uniq ,相同的資料中,僅出現一行代表;
-t  :分隔符號,預設是用 [tab] 鍵來分隔;
-k  :以那個區間 (field) 來進行排序的意思

一些實用的 netstat 語法,可以檢查主機的連線數量:
  • netstat -na
    顯示主機上所有已建立的連線。
  • netstat -an | grep :80 | sort
    顯示所有 port 80 的連線,並把結果排序。
  • netstat -n -p|grep SYN_REC | wc -l
    列出主機上有多少個 SYNC_REC,一般上這個數字應該相當低。
  • netstat -n -p | grep SYN_REC | sort -u
    同樣是列出 SYNC_REC,但不只列出數字,而是將每個 SYNC_REC 的連線列出。
  • netstat -n -p | grep SYN_REC | awk '{print $5}' | awk -F: '{print $1}'
    列出發送 SYNC_REC 的所有 ip 地址。
  • netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n
    計算每一個 ip 在主機上建立的連線數量。
  • netstat -anp |grep 'tcp\|udp' | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n
    列出從 TCP 或 UDP 連線到主機的 ip 的數量。
  • netstat -ntu | grep ESTAB | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -nr
    列出每個 ip 建立的 ESTABLISHED 連線數量。
  • netstat -plan|grep :80|awk {'print $5'}|cut -d: -f 1|sort|uniq -c|sort -nk 1
    列出每個 ip 建立的 port 80 連線數量。
netstat參數說明
-a或–all 示所有連線中的Socket
-A<網絡類>或–<網絡類> 列出該網絡類連線中的相地址。
-c或–continuous 列出網絡狀態
-C或–cache 示路由器配置的快取信息。
-e或–extend 網絡其他相信息。
-F或–fib FIB
-g或–groups 示多重播功能群組組員
-h或–help 線幫助。
-i或–interfaces 網絡界面信息表
-l或–listening 控中的服器的Socket
-M或–masquerade 偽裝網絡連線
-n或–numeric 直接使用IP地址,而不通域名服器。
-N或–netlink或–symbolic 網絡硬件外圍設備的符號連接名
-o或–timers 計時器。
-p或–programs 示正在使用Socket的程序識別碼和程序名
-r或–route Routing Table
-s或–statistice 網絡工作信息統計表。
-t或–tcp TCP傳輸協議連線狀況
-u或–udp UDP傳輸協議連線狀況
-v或–verbose 示指令程。
-V或–version 示版本信息。
-w或–raw RAW傳輸協議連線狀況