......selinux、awk应用案例、
1、编写脚本selinux.sh,实现开启或禁用SELinux功能(感觉没啥意思,故换一个) — 利用expect 实现批量多个主机 SELinux 禁用
先创建一个hostlist.txt文件,将要更换的主机ip预先写入其中
注意最后需要 reboot重启 才能使 selinux的变更生效
while read ip;do
user=root
passwd=123456
expect << EOF
set timeout 10
spawn ssh $user@$ip
expect {
"yes/no" { send "yes\n";exp_continue}
"password" { send "$passwd\n"}
}
expect "]#" { send "sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config\n"}
expect "]#" { send "reboot\n"}
expect eof
EOF
done < hostlist.txt
2、统计/etc/fstab文件中每个文件系统类型出现的次数
awk -F " " '/^UUID/{print $3}' /etc/fstab | sort | uniq -c | sort -nr
3、提取出字符串Yd$C@M05MB%9&Bdh7dq+YVixp3vpw中的所有数字
echo "Yd$C@M05MB%9&Bdh7dq+YVixp3vpw" | awk 'gsub(/[^[:digit:]]/,"",$0)'
4、解决DOS攻击生产案例:根据web日志或者网络连接数,监控当某个IP 并发连接数或者短时内PV达到100,即调用防火墙命令封掉对应的IP,监控频 率每隔5分钟。防火墙命令为:iptables -A INPUT -s IP -j REJECT# 一级目录
先将所有的ip及其连接次数保存在一个文件中
ss -nat | awk -F " +|:" '/^ESTAB/{ip[$(NF-2)]++}END{for(i in ip)print i,ip[i]}' > /data/scripts37/iplist.txt
再编写一个脚本,通过判断 将连接数大于100的ip封掉,并写入一个文件加以保存
vim iptables_reject.sh
while read ip times;do
if [ $times -gt 100 ];then
iptables -A INPUT -s $ip -j REJECT
echo $ip $times is REJECED >> rejectlist.txt
fi
done < /data/scripts37/iplist.txt
最后设置计划任务,设定 监控频率5分钟
chmod +x /data/scripts37/iptables_reject.sh
crontab -e
*/5 * * * * /data/scripts37/iptables_reject.sh