awk陣列命令經典生產實戰應用拓展

2021-09-03 04:25:04 字數 4383 閱讀 3738

四、awk

陣列命令生產實戰拓展

4.1

統計apache

日誌單ip

訪問請求數排名(這個常用,考試也常考)

假設apache

日誌內容

access.log

內容為:

法一:

[root@oldboy /]# awk ' end ' access.log |sort -rn -k2

10.0.0.41 3

10.0.0.47 2

10.0.0.46 2

10.0.0.42 2

10.0.0.43 1 #

提示$1

為第乙個域的內容。

-k2 

為對第二個字段排序,即對數量排序。

2

[root@oldboy /]# awk '' access.log|sort|uniq -c |sort -rn -k1

3 10.0.0.41

2 10.0.0.47

2 10.0.0.46

2 10.0.0.42

1 10.0.0.43

3

[root@oldboy /]# sed's/- -.*$//g' access.log|sort|uniq -c|sort -rn -k1

3 10.0.0.41 

2 10.0.0.47 

2 10.0.0.46 

2 10.0.0.42 

1 10.0.0.43 

sed管道後的第乙個

sort

是讓所有一樣的

ip挨著,因為

uniq -c

只能對相鄰的

ip行去重計數。

此題的解答可以有

10幾種,前面的課程我們已經帶大家細講了,這裡就不一一講解了。

解答:通過前面的命令,我們可以找到什麼

ip的訪問

apache

比較頻繁,一般單個

ip訪問數量過百,就值得懷疑了,如果短時間內上萬

pv訪問,說明就不正常了,可以採取相應的處理手段,比如封掉此

ip,此法要慎重,否則,可能會有誤封問題,因為,國內的大多數公司還是

nat上網的,出口乙個ip。

dos***的客戶端

ipnetstat -n >test.log

的結果:

active internet connections (w/o servers)

proto recv-q send-q local addressforeign addressstate

tcp00 124.123.3.79:80219.85.194.23:12004syn_recv

tcp00 124.123.3.77:80183.8.74.57:3276syn_recv

tcp00 124.123.3.77:80124.236.0.214:63191syn_recv

tcp00 124.123.3.77:80121.31.42.148:2338time_wait

tcp01023 124.123.3.77:8061.178.184.222:62683fin_wait1

tcp00 124.123.3.77:80222.79.242.74:7416time_wait

tcp04839 124.123.3.77:80121.31.42.148:30638fin_wait1

tcp00 124.123.3.77:80183.10.154.60:37282time_wait

tcp01 124.123.3.77:8059.49.174.176:26913closing

tcp00 124.123.3.77:80121.31.42.148:1787time_wait

tcp0174 124.123.3.77:80183.8.74.57:1165closing

[root@oldboy ~]# awk-f '[ :]+' ' end ' test.log |sort -rn -k2

121.31.42.148 3

183.8.74.57 2

foreign 1

61.178.184.222 1

59.49.174.176 1

222.79.242.74 1

219.85.194.23 1

183.10.154.60 1

124.236.0.214 1

1)結果中的字元等,你可以進一步過濾。

2) 深入淺出三劍客之awk

必殺技一例

3)實際生產中,我們過濾出已經建立連線的狀態established,然後,應用上述命令處理,完整命令可能為:

netstat -an|awk-f '[ :]+' ' end '|sort -rn -k2

[leo@lvs-1-1 ~]$ netstat -an|grep est|awk ''|cut -d : -f 1|grep -v "^$"|awk ' end '|sort -rn -k2|head -10

ip:220.181.125.69----- 51

ip:121.9.222.164----- 38

ip:121.9.222.158----- 38

ip:121.9.222.156----- 38

ip:121.9.222.161----- 36

ip:121.9.222.160----- 32

ip:121.9.222.159----- 32

ip:121.9.222.162----- 31

ip:61.163.7.200----- 29

ip:115.193.163.61----- 27

netstat -an|grep est|awk-f '[ :]+' ' end '|sort -rn -k2

注意,這裡過濾的是已經建立連線的的連線,即狀態established。

netstat -an|grep est|awk-f '[ :]+' ' end '|sort -rn -k2

注意,這裡過濾的是已經建立連線的的連線,即狀態established。

對於命令結果中,單

ip結尾的數大的,可以認為是不正常的訪問。如

121.31.42.148 100 

,表示乙個ip有

100個連線

一般來說可以懷疑不正常,當**壓力大時,可以考慮限制或封掉這些冒似非法

ip,當然,也不排除,企業裡多個使用者用乙個出口

ip訪問。

壯士扼腕,有時也是必須的,否則,可能**整體影響更大,甚至癱瘓。有時,各種搜尋引擎的爬蟲是很瘋狂的,通過本例及上面的案例,我們可以再負載

io高時,能夠進行臨時應對,當然,這不是長久的方法,優化網路和伺服器,部署大規模集群伺服器才是較好的解決之道。

awk實戰3 awk陣列技巧

awk乙個神奇而又強大的功能,絕對是乙個開發利器,效率直選 希望這裡的一些總結能幫到那些存在困惑的人 awk實戰1 基礎語法說明 awk實戰2 流程控制語句總結 awk實戰3 awk陣列技巧 awk實戰4 函式系列 算數函式說明 awk實戰5 函式系列 基本字串函式 awk實戰6 函式系列 字串函式...

shell 之awk 關聯陣列高階應用

最近由於資料遷移過,有些使用者資訊需要再次確認下,也許資料量比較大,但是需要最終確認的比如說是使用者id和其對應的使用者積分數,這樣就會導致出現文字a 老的資料 文字b 新的資料 比如 1101 1231102 1111103 1451104 152 這是文字a.txt 文字b.txt如下 1101...

六 一維陣列與經典應用

陣列 陣列 儲存一組想同型別的資料 陣列的基本要素 1.陣列型別 int string double 2.陣列識別符號 變數名 3.陣列的元素 陣列中需要儲存的值 4.元素下標 從0開始 陣列長度固定不變,避免越界。1.宣告陣列 inta 2.分配空間 a new int 5 3.賦值 a 0 8 ...