跳转至

第 24 章 编写脚本实用工具

约 201 个字 23 行代码 1 张图片 预计阅读时间 1 分钟

备份、用户管理、系统审计三类典型运维脚本模式。

24.1 备份归档

Bash
# 按日期命名 tar 归档
backup_dir=/backup
source_dir=/home/user/data
date=$(date +%Y%m%d)
tar -zcf "$backup_dir/data-$date.tar.gz" "$source_dir"

# find 删旧备份(>7 天)
find $backup_dir -name "*.tar.gz" -mtime +7 -delete

要点mktemp 安全临时目录;tar -zcf 一条命令归档;cron 定时。

24.2 批量用户

Bash
while IFS=',' read -r user pass; do
  useradd -m "$user"
  echo "$user:$pass" | chpasswd
done < users.csv

newusers batchfile(格式:user:pass:uid:gid:gecos:home:shell)。

24.3 系统审计

登录 Shell 审计(/etc/passwd 第 7 字段):

Bash
awk -F: '$7 !~ /(bash|false|nologin)$/ {print $1, $7}' /etc/passwd

SUID/SGID 文件

Bash
sudo find / -perm /6000 -type f 2>/dev/null

报告对比:按时间戳保存报告,diff old newcomm 比较差异。

24.4 健康检查与部署片段

Bash
#!/usr/bin/env bash
set -euo pipefail
URL=${1:-http://127.0.0.1:8080/health}
curl -sf "$URL" || { echo "health fail"; exit 1; }

# 零停机思路:新版本起在不同端口 → 健康检查 → 切 nginx upstream
pgrep -f 'myapp.jar' && kill -HUP $(pgrep -f 'myapp.jar')   # 示例:发 HUP 重载

24.5 脚本质量

Bash
shellcheck deploy.sh              # 静态检查
bash -n script.sh                 # 语法检查不执行

评论