10 Bash Scripts đơn giản để tự động hóa và tăng tốc quy trình làm việc

1. Cập nhật và Nâng cấp gói hệ thống

Mục đích: Đảm bảo hệ thống được cập nhật với các bản vá bảo mật và cập nhật phần mềm mới nhất.

Script:

#!/bin/bash

echo "Updating system packages..."
sudo apt update && sudo apt upgrade -y

echo "System updated successfully!"

Giải thích:

  • apt update làm mới danh sách các gói có sẵn.
  • apt upgrade -y tự động cài đặt các phiên bản cập nhật của các gói.
  • sudo được sử dụng để chạy các lệnh với quyền quản trị.

2. Giám sát không gian đĩa

Mục đích: Kiểm tra việc sử dụng đĩa và cảnh báo nếu việc sử dụng vượt quá ngưỡng quy định.

Script:

#!/bin/bash
THRESHOLD=80
echo "Checking disk usage..."
USAGE=$(df / | tail -1 | awk '{print $5}' | sed 's/%//')
if [ "$USAGE" -gt "$THRESHOLD" ]; then
  echo "Disk usage is above $THRESHOLD%! Current usage: $USAGE%"
else
  echo "Disk usage is below $THRESHOLD%. Current usage: $USAGE%"
fi

Giải thích:

  • df / kiểm tra không gian đĩa cho phân vùng gốc.
  • awksed trích xuất và làm sạch phần trăm sử dụng.
  • Lệnh if so sánh việc sử dụng với ngưỡng và in ra cảnh báo nếu vượt quá.

3. Tự động sao lưu tệp

Mục đích: Sao lưu một thư mục đến một vị trí cụ thể.

Script:

#!/bin/bash
SOURCE="/path/to/source"
DEST="/path/to/backup"
DATE=$(date +%Y-%m-%d)
echo "Backing up files from $SOURCE to $DEST/$DATE..."
mkdir -p "$DEST/$DATE"
cp -r "$SOURCE"/* "$DEST/$DATE"
echo "Backup completed!"

Giải thích:

  • Thay thế /path/to/source/path/to/backup bằng các đường dẫn thực tế.
  • date +%Y-%m-%d tạo một dấu thời gian cho thư mục sao lưu.
  • mkdir -p tạo thư mục sao lưu nếu nó không tồn tại.
  • cp -r sao chép đệ quy tất cả các tệp.

4. Triển khai một máy chủ web đơn giản

Mục đích: Nhanh chóng thiết lập một máy chủ web với Nginx.

Script:

#!/bin/bash
echo "Installing Nginx..."
sudo apt update
sudo apt install -y nginx
echo "Starting Nginx service..."
sudo systemctl start nginx
sudo systemctl enable nginx
echo "Nginx web server is up and running!"

Giải thích:

  • Cài đặt Nginx, một máy chủ web phổ biến.
  • systemctl khởi động và cho phép Nginx chạy khi khởi động.

5. Thêm và quản lý người dùng

Mục đích: Tự động tạo người dùng với các đặc quyền được xác định trước.

Script:

#!/bin/bash
USERNAME="newuser"
PASSWORD="password123"
GROUP="sudo"
echo "Creating user $USERNAME..."
sudo useradd -m -s /bin/bash "$USERNAME"
echo "$USERNAME:$PASSWORD" | sudo chpasswd
echo "Adding $USERNAME to $GROUP group..."
sudo usermod -aG "$GROUP" "$USERNAME"
echo "User $USERNAME created and added to $GROUP!"

Giải thích:

  • useradd tạo một người dùng mới.
  • chpasswd đặt mật khẩu người dùng.
  • usermod -aG thêm người dùng vào một nhóm cụ thể (ví dụ: sudo).

6. Kiểm tra thời gian hoạt động của máy chủ

Mục đích: Hiển thị thời gian máy chủ đã chạy.

Script:

#!/bin/bash
echo "Server uptime:"
uptime

Giải thích:

  • uptime hiển thị thời gian hoạt động của máy chủ, mức tải trung bình và số người dùng đã đăng nhập.

7. Kiểm tra các tiến trình đang hoạt động

Mục đích: Xác định các tiến trình tiêu tốn nhiều tài nguyên.

Script:

#!/bin/bash
echo "Top 5 processes by CPU usage:"
ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%cpu | head -6

Giải thích:

  • ps liệt kê các tiến trình với các chi tiết như PID, CPU và mức sử dụng bộ nhớ.
  • --sort=-%cpu sắp xếp các tiến trình theo mức sử dụng CPU theo thứ tự giảm dần.
  • head -6 giới hạn đầu ra ở 5 tiến trình hàng đầu (cộng với tiêu đề).

8. Tự động tạo khóa SSH

Mục đích: Tạo khóa SSH để truy cập từ xa an toàn.

Script:

#!/bin/bash
KEY_NAME="id_rsa"
echo "Generating SSH key..."
ssh-keygen -t rsa -b 4096 -f "$HOME/.ssh/$KEY_NAME" -N ""
echo "SSH key generated at $HOME/.ssh/$KEY_NAME"

Giải thích:

  • ssh-keygen tạo một cặp khóa RSA với 4096 bit.
  • -f chỉ định tên và vị trí tệp.
  • -N "" đặt cụm mật khẩu trống.

9. Khởi động lại một dịch vụ

Mục đích: Khởi động lại một dịch vụ nếu nó không chạy.

Script:

#!/bin/bash
SERVICE="nginx"
if ! systemctl is-active --quiet "$SERVICE"; then
  echo "$SERVICE is not running. Restarting..."
  sudo systemctl restart "$SERVICE"
else
  echo "$SERVICE is running."
fi

Giải thích:

  • systemctl is-active kiểm tra xem dịch vụ có đang chạy không.
  • Nếu không, script sẽ khởi động lại dịch vụ.

10. Lên lịch Cron Job

Mục đích: Tự động hóa việc lên lịch tác vụ bằng cách thêm một cron job.

Script:

#!/bin/bash
JOB="0 2 * * * /path/to/script.sh"
CRON_FILE="/tmp/mycron" # LƯU Ý: Biến này không được dùng trong script
echo "Adding cron job..."
(crontab -l 2>/dev/null; echo "$JOB") | crontab -
echo "Cron job added successfully!"

Giải thích:

  • Thay thế /path/to/script.sh bằng script bạn muốn lên lịch.
  • (crontab -l; echo "$JOB") nối thêm job mới vào các job hiện có.
  • crontab - tải danh sách các cron job đã cập nhật.

Mẹo để chạy Scripts:

  • Lưu Script: Lưu script dưới dạng tệp .sh (ví dụ: script.sh).
  • Cấp quyền thực thi: Chạy chmod +x script.sh để cấp quyền thực thi cho script.
  • Chạy Script: Thực thi bằng cách sử dụng ./script.sh.
  • Gỡ lỗi: Sử dụng bash -x script.sh để gỡ lỗi nếu xảy ra lỗi.

Những script này cung cấp một nền tảng vững chắc để tự động hóa các tác vụ lặp đi lặp lại trong các quy trình làm việc DevOps.

Article Thumbnail
Datadog Webinar: Modernize AWS Logs at Scale
Chia sẻ bài viết:
Theo dõi
Thông báo của
0 Góp ý
Được bỏ phiếu nhiều nhất
Mới nhất Cũ nhất
Phản hồi nội tuyến
Xem tất cả bình luận