Shell練習(九)
要求:請詳細查看如下幾個數字的規律,並使用shell腳本輸出後面的十個數字。
10 31 53 77 105 141 …….
提示:相鄰兩個數差值的差值有規律
參考答案:
習題2:封IP
要求:根據web服務器上的訪問日誌,把一些請求量非常高的ip給拒絕掉!
分析: 我們要做的,不僅是要找到哪些ip請求量不合法,並且還要每隔一段時間把之前封掉的ip(若不再繼續請求了)給解封。 所以該腳本的關鍵點在於定一個合適的時間段和閾值。
比如, 我們可以每一分鐘去查看一下日誌,把上一分鐘的日誌給過濾出來分析,並且只要請求的ip數量超過100次那麽就直接封掉。 而解封的時間又規定為每半小時分析一次,把幾乎沒有請求量的ip給解封!
參考日誌文件片段:
137.23.21.127 [20/Jan/2018:00:01:24 +0800] www.testbbs.com “/bbs/thread-5622-3-1.html” 200 “-” “Mozilla/5.0 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)”
54.124.50.87 [20/Jan/2018:00:01:34 +0800] www.testbbs.com “/bbs/search.php?mod=forum&srchtxt=LNMP&formhash=8f0c7da9&searchsubmit=true&source=hotsearch” 200 “-” “Mozilla/5.0 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)”
參考答案:
習題3:監控httpd進程
要求:在服務器上,寫一個監控腳本。
1. 每隔10s去檢測一次服務器上的httpd進程數,如果大於等於500的時候,就需要自動重啟一下apache服務,並檢測啟動是否成功?
2. 若沒有正常啟動還需再一次啟動,最大不成功數超過5次則需要理解發郵件通知管理員,並且以後不需要再檢測!
3. 如果啟動成功後,1分鐘後再次檢測httpd進程數,若正常則重復之前操作(每隔10s檢測一次),若還是大於等於500,那放棄重啟並需要發郵件給管理員,然後自動退出該腳本。發郵件腳本為之前mail.py
參考答案:
【答案明天中午12點前公布!】
Shell練習(九)