Linux shell脚本练习(五)

防止ddos攻击,当某个ip访问过于频繁不合理时,对其进行屏蔽

bash 复制代码
#!/bin/bash
DATE=$(date +%d/%b/%Y:%H:%M)
LOG_FILE=/usr/local/nginx/logs/demo2.access.log
ABNORMAL_IP=$(tail -n5000 $LOG_FILE |grep $DATE |awk '{a[$1]++}END{for(i in a)if(a[i]>10)print i}')
for IP in $ABNORMAL_IP; do
    if [ $(iptables -vnL |grep -c "$IP") -eq 0 ]; then
        iptables -I INPUT -s $IP -j DROP
        echo "$(date +'%F_%T') $IP" >> /tmp/drop_ip.log
    fi
done

root@linux-lyz test1\]# chmod +x ddos.sh \[root@linux-lyz test1\]# ./ddos.sh \[root@linux-lyz test1\]#

nginx 日志按日期切割

bash 复制代码
#!/bin/bash
LOG_DIR=/usr/local/nginx/logs
YESTERDAY_TIME=$(date -d "yesterday" +%F)
LOG_MONTH_DIR=$LOG_DIR/$(date +"%Y-%m")
LOG_FILE_LIST="default.access.log"

for LOG_FILE in $LOG_FILE_LIST; do
    [ ! -d $LOG_MONTH_DIR ] && mkdir -p $LOG_MONTH_DIR
    mv $LOG_DIR/$LOG_FILE $LOG_MONTH_DIR/${LOG_FILE}_${YESTERDAY_TIME}
done

kill -USR1 $(cat /var/run/nginx.pid)

root@linux-lyz test1\]# ./split_nginx_log.sh \[root@linux-lyz test1\]# mkdir -p /usr/local/nginx/logs/2024-12 \[root@linux-lyz test1\]# mv /usr/local/nginx/logs/default.access.log /usr/local/nginx/logs/2024-12/default.access.log_2024-12-16 \[root@linux-lyz test1\]# kill -USR1 25423 \[root@linux-lyz test1\]#

相关推荐
我爱云计算2 小时前
K8S详解(5万字详细教程)
linux·运维·云原生·容器·kubernetes
2301_794333914 小时前
实验室服务器配置|通过Docker实现Linux系统多用户隔离与安全防控
linux·服务器·docker·实验室
荣光波比5 小时前
Nginx 实战系列(一)—— Web 核心概念、HTTP/HTTPS协议 与 Nginx 安装
linux·运维·服务器·nginx·云计算
绿箭柠檬茶7 小时前
Ubuntu 使用 Samba 共享文件夹
linux·运维·ubuntu
工藤新一¹8 小时前
Linux —— 虚拟进程地址空间
linux·运维·服务器·c/c++·虚拟进程地址空间
Aspiresky9 小时前
浅析Linux内核scatter-gather list实现
linux·dma·scatter/gather
奔跑吧 android9 小时前
【linux kernel 常用数据结构和设计模式】【数据结构 3】【模拟input子系统input_dev和input_handler之间的多对多关系】
linux·数据结构·input·kernel·input_dev·input_handler·input_handle
再难也得平9 小时前
Linux初级篇
linux·运维·服务器
小猫挖掘机(绝版)10 小时前
通过tailscale实现一台电脑上vscode通过ssh连接另一台电脑上的VMware Linux 虚拟机
linux·windows·vscode·ubuntu·ssh
ajassi200011 小时前
开源 C++ QT Widget 开发(十三)IPC通讯--本地套接字 (Local Socket)
linux·c++·qt·开源