文本處理三劍客之awk

一、編寫腳本selinux.sh,實現開啓或禁用SELinux功能linux

  • 臨時開啓或禁用
[root@centos7 ~]# cat selinux.sh
#!/bin/bash
set -ue
[ $# -ne 1 ] && echo "usage:`basename $0` 0|1" && exit 10;

if [ $1 -eq 0 ]
then
    setenforce $1
    echo "diable selinux finished"
elif [ $1 -eq 1 ]
then
    setenforce $1
    echo "enable selinux finished"
else
    echo "usage:`basename $0` 0|1"
fi
  • 永久開啓或禁用
[root@centos7 ~]# cat selinux.sh
#!/bin/bash
set -ue
[ $# -ne 1 ] && echo "usage:`basename $0` 0|1" && exit 10;

if [ $1 -eq 0 ]
then
    sed -i.bak 's/SELINUX=enforcing/SELINUX=disabled/' /etc/sysconfig/selinux
elif [ $1 -eq 1 ]
then
    sed -i.bak 's/SELINUX=disabled/SELINUX=enforcing/' /etc/sysconfig/selinux
else
    echo "usage:`basename $0` 0|1"
fi

重啓系統生效web

[root@centos7 ~]#reboot

二、統計/etc/fstab文件中每一個文件系統類型出現的次數centos

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

三、提取出字符串Yd$C@M05MB%9&Bdh7dq+YVixp3vpw中的全部數字bash

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

四、解決DOS生產案例:根據web日誌或者或者網絡鏈接數,監控當某個IP 併發鏈接數或者短時內PV達到100,即調用防火牆命令封掉對應的IP,監控頻 率每隔5分鐘。防火牆命令爲:iptables -A INPUT -s IP -j REJECT網絡

[root@centos7 ~]# crontab -l
*/5 * * * * sh /root/monitor.sh >/dev/null
[root@centos7 ~]# cat monitor.sh
#!/bin/bash
ip_num=`ss -t |awk -F [" ":]+ '/ESTAB/{ip[$6]++}END{for (i in ip) {print i,ip[i]}}'`
echo ${ip_num} |while read ip num
do
    if [ $num -gt 10 ];then 
    iptables -A INPUT -s $ip -j REJECT
    fi
done
相關文章
相關標籤/搜索