cat /var/log/secure | grep "Failed password" | awk '{ print $(NF-3)}' | sort -n | uniq -c | awk '{ print $2"="$1}' > abc.txt
#得到扫描失败的ip地址
ipaddr=(`cat abc.txt`)
for i in ${ipaddr[*]} ; do
IP=`echo $i |awk -F= '{print $1}'`
NUM=`echo $i|awk -F= '{print $2}'`
if [ $NUM -gt 20 ]; #得到扫描超过20次的ip地址
then
grep $IP /etc/hosts.deny > /dev/null
if [ $? -gt 0 ]; #判断该ip是否在/etc/hosts.deny中
then
echo "sshd:$IP" >> /etc/hosts.deny
fi
fi
done
把脚本放到自动任务中,每10分钟自动执行