找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 10977|回复: 0

批量服务器系统初始化配置自动化脚本

[复制链接]

1

主题

0

回帖

5

积分

新手上路

积分
5
发表于 2026-8-11 12:33:16 | 显示全部楼层 |阅读模式
以下是一个用于批量服务器系统初始化配置的自动化脚本示例,结合了常见的初始化任务(如更新系统、配置网络、设置防火墙、创建用户等)。该脚本适用于基于Debian/Ubuntu或RHEL/CentOS的Linux系统。
  1. #!/bin/bash
  2. # 批量服务器初始化脚本
  3. # 支持系统: Debian/Ubuntu, RHEL/CentOS
  4. # 检查是否为root用户
  5. if [ "$(id -u)" -ne 0 ]; then
  6.     echo "请使用root用户运行此脚本!"
  7.     exit 1
  8. fi
  9. # 定义系统类型变量
  10. SYSTEM_TYPE=""
  11. if [ -f /etc/os-release ]; then
  12.     . /etc/os-release
  13.     SYSTEM_TYPE=$ID
  14. fi
  15. # 初始化函数
  16. initialize_system() {
  17.     echo "开始系统初始化..."
  18.     # 更新系统软件包
  19.     case $SYSTEM_TYPE in
  20.         ubuntu|debian)
  21.             apt update -y && apt upgrade -y
  22.             ;;
  23.         centos|rhel|fedora)
  24.             yum update -y
  25.             ;;
  26.         *)
  27.             echo "不支持的操作系统: $SYSTEM_TYPE"
  28.             exit 1
  29.             ;;
  30.     esac
  31.     # 安装常用工具
  32.     case $SYSTEM_TYPE in
  33.         ubuntu|debian)
  34.             apt install -y curl wget vim net-tools git
  35.             ;;
  36.         centos|rhel|fedora)
  37.             yum install -y curl wget vim net-tools git
  38.             ;;
  39.     esac
  40.     # 配置时区
  41.     timedatectl set-timezone Asia/Shanghai
  42.     # 禁用SELinux(仅RHEL系)
  43.     if [ "$SYSTEM_TYPE" = "centos" ] || [ "$SYSTEM_TYPE" = "rhel" ]; then
  44.         setenforce 0
  45.         sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config
  46.     fi
  47.     # 配置SSH安全
  48.     sed -i 's/#*PermitRootLogin yes/PermitRootLogin no/' /etc/ssh/sshd_config
  49.     sed -i 's/#*PasswordAuthentication yes/PasswordAuthentication no/' /etc/ssh/sshd_config
  50.     systemctl restart sshd
  51.     # 配置防火墙(UFW或firewalld)
  52.     case $SYSTEM_TYPE in
  53.         ubuntu|debian)
  54.             ufw allow 22/tcp
  55.             ufw enable
  56.             ;;
  57.         centos|rhel|fedora)
  58.             firewall-cmd --permanent --add-service=ssh
  59.             firewall-cmd --reload
  60.             ;;
  61.     esac
  62.     # 创建普通用户并配置sudo权限
  63.     USERNAME="deploy"
  64.     if ! id "$USERNAME" &>/dev/null; then
  65.         useradd -m -s /bin/bash $USERNAME
  66.         echo "$USERNAME ALL=(ALL) NOPASSWD:ALL" | tee /etc/sudoers.d/$USERNAME
  67.         chmod 0440 /etc/sudoers.d/$USERNAME
  68.     fi
  69.     echo "系统初始化完成!"
  70. }
  71. # 主程序
  72. initialize_system
  73. # 可选:添加更多自定义配置(如NTP配置、内核参数调整等)
  74. # ...
  75. exit 0
复制代码

脚本说明:

  • 系统检测
  • 自动检测操作系统类型(Debian/Ubuntu或RHEL/CentOS)
  • 系统更新
  • 使用包管理器更新系统软件包
  • 常用工具安装
  • 安装curl、wget、vim等常用工具
  • 时区配置
  • 设置为上海时区(可根据需要修改)
  • SELinux配置(仅RHEL系):
  • 临时和永久禁用SELinux
  • SSH安全配置
  • 禁止root登录
  • 禁用密码认证(推荐使用SSH密钥)
  • 防火墙配置
  • Ubuntu/Debian使用UFW
  • RHEL/CentOS使用firewalld
  • 允许SSH访问
  • 用户管理
  • 创建名为"deploy"的普通用户
  • 配置sudo权限(无需密码)


使用方法:

  • 将脚本保存为
    1. initialize.sh
    复制代码
  • 赋予执行权限:
    1. chmod +x initialize.sh
    复制代码
  • 以root用户运行:
    1. ./initialize.sh
    复制代码


扩展建议:

  • 密钥分发:可以添加功能将SSH公钥分发到所有服务器
  • 配置文件管理:使用模板引擎(如Jinja2)管理配置文件
  • Ansible集成:考虑将此脚本转换为Ansible playbook以获得更好的可维护性
  • 日志记录:添加详细的日志记录功能
  • 错误处理:增强错误检测和处理机制


注意事项:

  • 测试脚本时建议先在测试环境运行
  • 禁用root登录和密码认证前,确保已有其他访问方式(如控制台访问)
  • 根据实际需求调整防火墙规则和开放端口


这个脚本可以作为基础模板,根据您的具体需求进行修改和扩展。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|五云论坛 ( 黔ICP备2022001370号-1|贵公网安备52032102000798号 )

GMT+8, 2026-9-12 19:53 , Processed in 0.079321 second(s), 19 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表