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

(1)、编辑selinux.sh如下: #!/bin/bash OPEN='SELINUX=enforcing' CLOSE='SELINUX=disabled' if grep $OPEN /etc/selinux/config &>/dev/null; then sed -i '/^SELINUX/s/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config elif grep $CLOSE /etc/selinux/config &>/dev/null; then sed -i '/^SELINUX/s/SELINUX=disabled/SELINUX=enforcing/g' /etc/selinux/config fi

(2)、加上chmod +x selinux.sh 执行

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

   cat /etc/fstab | awk '/^UUID/{print $3}' | sort | uniq -c

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

     echo 'Yd$C@M05MB%9&Bdh7dq+YVixp3vpw' | grep -o '[0-9]'

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

第一种命令语句方法实现:

#!/bin/bash NUM=1 lastb | awk '{print $3}'| grep -E [^[:alpha:]] | sort | uniq -c | sort -rn > ovo.txt cat ovo.txt | awk '{print $1}' > text1.txt cat ovo.txt | awk '{print $2}' > text2.txt IP=head -n $NUM text2.txt | tail -n 1 for i in cat text1.txt; do if [ $i -ge 100 ]; then iptables -A INPUT -s $IP -j REJECT fi NUM=$[$NUM+1] done

第二种方法用for循环实现:

#!/bin/bash

declare -A BEST

IFS=$'\n' #bash中默认把空格作为了分割符,通过修改bash中IFS的变量值来设置默认分割符

ss -an | awk -F " +|:" '!/State/{print $(NF-2)}' | sort |uniq -c | sort -rn > text

for i in cat test; do OPT=echo $i | awk '{print $1}' BEST[$OPT]=echo $i | awk '{print $2}' if [ $OPT -ge 100 ]; then iptables -A INPUT -s ${BEST[$OPT]} -j REJECT fi done

第三种方法使用awk实现:

#!/bin/bash

ss -nt | awk -F ":| +" '!/^State/{ip[$(NF-2)]++}END{for(i in ip){if(ip[i]>100){print i}}}' > ip.txt

for i in cat ip.txt;do

iptables -A INPUT -s $i -j REJECT

done

第四种方法使用while循环实现:

#!/bin/bash declare -A BEST

ss -nt | awk -F " +|:" '!/State/{print $(NF-2)}' | sort |uniq -c | sort -rn > awm.txt

while read line;do INDEX=echo $line | awk '{print $1}' BEST[$INDEX]=echo $line | awk '{print $2}' if [ $INDEX -ge 100 ]; then iptables -A INPUT -s ${BEST[$INDEX]} -j REJECT fi done < awm.txt

(2)、以上方法编辑完成后给文件加可执行权限:chmod +x xxx.sh

创建计划任务每五分钟巡检一次:

crontab -e 编辑如下:

*/5 * * * * /root/xxx.sh