linux文本三剑客之awk应用
1、编写脚本selinux.sh,实现开启或禁用SELinux功能
if [ "$1" == "on" -o "$1" = 1 ];then sed -i 's@^SELINUX=.*@SELINUX=enforcing@' /etc/selinux/config elif [ "$1" == "off" -o "$1" = 0 ];then sed -i 's@^SELINUX=.*@SELINUX=disabled@' /etc/selinux/config; else echo "Usage: $0 on or no 1|off or no 0" fi

测试:

2、统计/etc/fstab文件中每个文件系统类型出现的次数
思路:我们把要统计的文件类型作为数组的下标,利用++ 作为统计的个数,统计完后,我们对数据进行遍历循环,在循环中 FOR T in 数组,中的T就代表下标, 而所对应的值是 数组对应的下标type[T]
awk '/^UUID/{type[$3]++}END{for(T in type){print T,type[T]}}' /data/fstab | sort -k2 -rn
测试

3、提取出字符串Yd$C@M05MB%9&Bdh7dq+YVixp3vpw中的所有数字
思路主要利用awk的函数 :gsub(r,s,[t]):对t字符串进行搜索r表示的模式匹配的内容,并全部替换为s所表示的内容
echo 'Yd$C@M05MB%9&Bdh7dq+YVixp3vpw'|awk 'gsub(/[^0-9]/,"",$0)'
测试

4、解决DOS攻击生产案例:根据web日志或者或者网络连接数,监控当某个IP 并发连接数或者短时内PV达到100,即调用防火墙命令封掉对应的IP,监控频 率每隔5分钟。防火墙命令为:iptables -A INPUT -s IP -j REJECT
1.编写DDOS.sh 脚本
\#第一步统计出ip的链接个数,把统计结果重定向到sum.txt awk '{ip[$1]++}END{for(i in ip){print i,ip[i]}}' /data/access_log | sort -r -k2 -nr >sum.txt \#逐行处理,把每行的内容读取处理,判断,如果满足条件就把用户仍到防火墙中 while read line do num=echo $line | awk '{print $2}' ip=echo $line | awk '{print $1}' if [[ $num -gt 100 ]];then iptables -I INPUT -s $ip -j DROP fi done < sum.txt

测试:
1.打开防火墙
[root@chujiapeng data]# systemctl start firewalld.service
2.执行脚本

3,查看,被扔进防火墙的ip

4对比

2.编写定时任务
crontab -e

wq
保持退出
补充,在实际企业应用中为了高效率,我们可以用一行代码 就搞定

或者:

posted on 2020-08-16 13:47 jiapengchu 阅读(288) 评论(0) 收藏 举报
浙公网安备 33010602011771号