首页 > 系统服务 > 详细

shell脚本和awk实践

时间:2020-12-28 10:44:32      阅读:37      评论:0      收藏:0      [点我收藏+]
1、编写脚本selinux.sh,实现开启或禁用SELinux功能
#!/bin/bash

[ $# -ne 1 ] && {
    echo ‘Useage: selinux on | off | enable | disable‘
    exit
}

case $1 in
on)
    setenforce 1 && echo "SELinux has been turn on temporary."
    ;;
off)
    setenforce 0 && echo "SELinux has been turn off temporary."
    ;;
enable)
    setenforce 1
    sed -i ‘s/SELINUX=disabled/SELINUX=enforcing/‘ /etc/selinux/config
    echo "SELinux has been enabled,you need reboot mechine to make it work."
    ;;
disable)
    setenforce 0
    sed -i ‘s/SELINUX=enforcing/SELINUX=disabled/‘ /etc/selinux/config
    echo "SELinux has been disabled,you need reboot mechine to make it work."
    ;;
*)
    echo ‘Useage: selinux on | off | enable | disable‘
esac

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

# 第一种方法
egrep -v ‘^#|^$‘ /etc/fstab | awk ‘{print $3}‘ | sort -r | uniq -c

# 第二种方法
awk -F" " ‘/^UUID|^\/dev/{print $3}‘ /etc/fstab | uniq -c | sort -r

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

echo "Yd$C@M05MB%9&Bdh7dq+YVixp3vpw" | awk ‘{gsub(/[^0-9]/,""); print $0}‘

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

# blockip.sh

#! /bin/bash
ss -tan | awk -F " +|:" ‘/ESTAB/{ip[$(NF-2)]++}END{for(i in ip)if(ip[i]>99) print i}‘ > /tmp/BlockIP.log

while read IP;do
    iptables -A INPUT -j REJECT -s $IP 
    echo "`date +‘%F %T‘`    $IP reject" >> /tmp/BlockList.txt
done < /tmp/BlockIP.log

# 给脚本添加执行权限
chmod u+x blockip.sh

# 添加计划任务
echo ‘* */12 * * 1-5 /root/blockip.sh‘ >> /var/spool/cron/root

shell脚本和awk实践

原文:https://blog.51cto.com/14920534/2575381

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!