1、统计/etc/fstab文件中每个文件系统类型出现的次数
方法一
[root@redhat7 app]#grep "^UUID" /etc/fstab |tr -s " "|cut -d " " -f3|sort|uniq -c
1 swap
3 xfs
方法二
[root@redhat7 app]#awk '/^UUID/{fs[$3]++}END{for(i in fs){print i,fs[i]}}' /etc/fstab
swap 1
xfs 3
2、统计/etc/fstab文件中每个单词出现的次数
第一种:grep
[root@redhat7 app]#egrep -o "[[:alpha:]]+" /etc/fstab|sort|uniq -c
第二种:sed
[root@redhat7 app]#sed -r 's/[^[:alpha:]]/\n/g' /etc/fstab|sort|uniq -c
第三种:awk
[root@redhat7 app]#egrep -o "[[:alpha:]]+" /etc/fstab|awk '{num[$1]++}END{for(i in num){print i,num[i]}}'
3、提取出字符串Yd$C@M05MB%9&Bdh7dq+YVixp3vpw中的所有数字
方法一
[root@redhat7 app]#echo "Yd$C@M05MB%9&Bdh7dq+YVixp3vpw"|grep -o "[0-9]"
方法二
[root@redhat7 app]#echo "Yd$C@M05MB%9&Bdh7dq+YVixp3vpw"|sed -r 's/[^0-9]/\n/g'|sed '/^$/d'
方法三
[root@redhat7 app]#echo "Yd$C@M05MB%9&Bdh7dq+YVixp3vpw"|awk -F "[^0-9]" '{for(i=1;i<=NF;i++){print $i}}'|sed '/^$/d'
4、解决DOS攻击生产案例:根据web日志或者网络连接数,监控当某个IP并发连接数或者短时内PV达到100,即调用防火墙命令封掉对应的IP,监控频率每隔5分钟。防火墙命令为:iptables -A INPUT -s IP -j REJECT
#!/bin/bash
#
>/app/f1
while true;do
ss -nt|awk -F "[[:space:]:]+" '/^ESTAB/{ip[$6]++}END{for(i in ip){print i,ip[i]}}'|sort -k2 -nr>/app/f1
awk '{if($2>=100){system("iptables -A INPUT -s "$1" -j REJECT")};printf "ipaddr=%-15s num= %d",$1,$2}' /app/f1
sleep 5m
done