1. 程式人生 > >Shell程式設計面試題6_監控IP連線數,超過100封掉該IP

Shell程式設計面試題6_監控IP連線數,超過100封掉該IP

老男孩出的Shell程式設計企業面試題6:

寫一個指令碼解決DOS攻擊生產案例
提示:根據web日誌或者或者網路連線數,監控當某個IP併發連線數或者短時內PV達到100,即呼叫防火牆命令封掉對應的IP,監控頻率每隔3分鐘。防火牆命令為:iptables -I INPUT -s 10.0.1.10 -j DROP。

我的Shell指令碼如下:

#!/bin/bash

#environment variable  
source /etc/profile

iplist=`netstat -ntu | awk '{print $5}'| cut -d':' -f1| sort |uniq -c | sed 'N;$d;P;D' | awk '{if($1>100)print $2}'`
for ip in $iplist
do
        iptables -I INPUT -s $ip -j DROP
        echo "$ip is drop!"
done
執行crontab -e,設定每3分鐘執行一次:
crontab -e

*/3 * * * * /bin/bash /test/shellstudy/netstatip.sh