Operations 3 min read

Bash Scripts for Automatic DOS Attack Blocking and MySQL Database Backup

This article provides two Bash scripts: one that automatically detects and blocks IP addresses generating excessive requests to an Nginx server using iptables, and another that backs up all non‑system MySQL databases with timestamped filenames, both designed for easy server operation and maintenance.

Practical DevOps Architecture
Practical DevOps Architecture
Practical DevOps Architecture
Bash Scripts for Automatic DOS Attack Blocking and MySQL Database Backup

1. DOS attack prevention (automatic IP blocking)

#!/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

2. MySQL database backup

#!/bin/bash
DATE=$(date +%F_%H-%M-%S)
HOST=localhost
USER=backup
PASS=123.com
BACKUP_DIR=/data/db_backup
DB_LIST=$(mysql -h$HOST -u$USER -p$PASS -s -e "show databases;" 2>/dev/null | egrep -v "Database|information_schema|mysql|performance_schema|sys")
for DB in $DB_LIST; do
  BACKUP_NAME=$BACKUP_DIR/${DB}_${DATE}.sql
  if ! mysqldump -h$HOST -u$USER -p$PASS -B $DB > $BACKUP_NAME 2>/dev/null; then
    echo "$BACKUP_NAME backup failed!"
  fi
done

---end---

If you found this article helpful, please like, view, and share to support further quality content creation.

Original Source

Signed-in readers can open the original source through BestHub's protected redirect.

Sign in to view source
Republication Notice

This article has been distilled and summarized from source material, then republished for learning and reference. If you believe it infringes your rights, please contactadmin@besthub.devand we will review it promptly.

BashiptablesDoS attackmysql backup
Practical DevOps Architecture
Written by

Practical DevOps Architecture

Hands‑on DevOps operations using Docker, K8s, Jenkins, and Ansible—empowering ops professionals to grow together through sharing, discussion, knowledge consolidation, and continuous improvement.

0 followers
Reader feedback

How this landed with the community

Sign in to like

Rate this article

Was this worth your time?

Sign in to rate
Discussion

0 Comments

Thoughtful readers leave field notes, pushback, and hard-won operational detail here.