使用netstat命令檢視連線到伺服器特定埠的所有IP地址
阿新 • • 發佈:2021-02-01
技術標籤:運維
0 Linux檢視連線到伺服器特定埠的所有IP地址
我們以80埠為例,執行過程中,由於列表過長,可能存在一段時間等待。如果要檢視其它埠,替換即可。
netstat -tn 2>/dev/null | grep :80 | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -nr | head
最終輸出如下:
97 114.198.236.100
56 67.166.157.194
44 170.248.43.76
38 141.0.9.20
37 49.248.0.2
37 153. 100.131.12
31 223.62.169.73
30 65.248.100.253
29 203.112.82.128
29 182.19.66.187
接著我們分解來看這條命令
1. netstat -tn 2>/dev/null
我們使用netstat[1]命令列出所有服務和客戶端的連線。
- -n 將最終的外部連線以數字形式展示(ip地址),而不是通過主機名或域名形式展示
- -t 僅展示tcp連線
未指定-n外部連線以主機名形式展示
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 set-bf-hit-dsp-qua:9511 set-bf-eat-dsp-tri:37273 ESTABLISHED
指定-n後以ip地址形式展示
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 10.54.191.131:9511 10.54.167.143:37273 ESTABLISHED
2>/dev/null
將標準錯誤輸出重定向到/dev/null
2. grep :80
僅篩選出連線80埠的ip,這裡可以替換為我們想要檢查的埠。
tcp 0 0 64.91.*.*:80 114.198.236.100:12763 TIME_WAIT
tcp 0 0 64.91.*.*:80 175.136.226.244:51950 TIME_WAIT
tcp 0 0 64.91.*.*:80 175.136.226.244:51951 TIME_WAIT
tcp 0 0 64.91.*.*:80 149.238.193.121:65268 TIME_WAIT
tcp 0 0 64.91.*.*:80 114.198.236.100:44088 ESTABLISHED
tcp 0 0 64.91.*.*:80 175.136.226.244:51952 TIME_WAIT
3. awk ‘{print $5}’
因為netstat命令第5列列出了連線到本服務外部地址資訊。所以要篩選出第5列資料。
114.198.236.100:12763
175.136.226.244:51950
175.136.226.244:51951
149.238.193.121:65268
114.198.236.100:44088
175.136.226.244:51952
4. cut -d: -f1
由於要統計IP的數量,我們將篩選的結果按冒號(:)切分,並篩選出切分後第一列資料。
- -d 指定切分符號
- -f 指定了要展示切分後的哪列資料,這個是和-d配合使用。
114.198.236.100
175.136.226.244
175.136.226.244
149.238.193.121
114.198.236.100
175.136.226.244
5. sort | uniq -c | sort -nr
接著對第4步的結果進行排序,隨後統計每個IP的數量,最終對統計的結果按降序排序輸出
sort後得到如下結果:
114.198.236.100
114.198.236.100
149.238.193.121
175.136.226.244
175.136.226.244
175.136.226.244
uniq -c –分組統計數量
2 114.198.236.100
1 149.238.193.121
3 175.136.226.244
sort -nr 對結果按降序排序
3 175.136.226.244
2 114.198.236.100
1 149.238.193.121
6. head
最後我們通過head命令展示前10行資料
參考
[1]netstat命令詳解,https://www.howtogeek.com/513003/how-to-use-netstat-on-linux/