很暴力,建议还是在程序中给相应错误提示更能提升“真实用户”体验。
#!/bin/bash error=`/usr/bin/tail -n100 /usr/local/apache2/logs/error_log |awk -F ' ' '{print $8}' |awk -F ']' '{print $1}' |sort -rn |uniq -c |sort -r |head -n1` errnum=`/bin/echo $error |awk -F ' ' '{print $1}'` if [ $errnum -gt 30 ];then errip=`/bin/echo $error | awk -F ' ' '{print $2}'` /sbin/iptables -F /sbin/iptables -A INPUT -s $errip -p tcp --dport 80 -j DROP fi