第十周--IP监控任务脚本实现

1、编写脚本selinux.sh,实现开启或禁用SELinux功能

[root@centos7 ~]# cat selinux.sh 
#!/bin/bash
#FileName:  selinux.sh
if [[ $1 =~ ^[Oo][Nn]$ ]];then
    sed -i 's/^SELINUX=.*/SELINUX=enforcing/' /etc/selinux/config &> /dev/null
        setenforce 1 &> /dev/null
elif [[ $1 =~ ^[Oo][Ff][Ff]$ ]];then
    sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config &> /dev/null
    setenforce 0 &> /dev/null
else
    echo "you are  error,please input on or off !!!"
fi

2、统计/etc/fstab文件中每个文件系统类型出现的次数

[root@centos7 ~]# cat /etc/fstab | awk '/^UUID/{sys[$3]++}END{for(i in sys){print i,sys[i]}}'
xfs 1

3、提取出字符串Yd$C@M05MB%9&Bdh7dq+YVixp3vpw中的所有数字

[root@centos7 ~]# echo "Yd$C@M05MB%9&Bdh7dq+YVixp3vpw" |tr -dc '[0-9]
'
05973

4、解决DOS攻击生产案例:根据web日志或者或者网络连接数,监控当某个IP 并发连接数或者短时内PV达到100,即调用防火墙命令封掉对应的IP,监控频 率每隔5分钟。防火墙命令为:iptables -A INPUT -s IP -j REJECT

[root@centos7 ~]# cat checkip.sh 
#!/bin/bash
 
#environment variable  
source /etc/profile
iplist=$(ss -tan | awk -F"[[:space:]]+|:" '/ESTAB/{ip[$(NF-2)]++}END{for(i in ip){print i,ip[i]}}' | awk '{if($2>1)print $1}') 
for ip in $iplist
do
        iptables -I INPUT -s $ip -j DROP
        echo "$ip is drop!"
done

将脚本存到计划任务中,设置定时任务计划:

[root@centos7 ~]# crontab  -e
*/5 * * * *  /root/checkip.sh

  

原文地址:https://www.cnblogs.com/struggle-1216/p/12564095.html