admin 发表于 2026-8-11 12:33:16

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

以下是一个用于批量服务器系统初始化配置的自动化脚本示例,结合了常见的初始化任务(如更新系统、配置网络、设置防火墙、创建用户等)。该脚本适用于基于Debian/Ubuntu或RHEL/CentOS的Linux系统。

#!/bin/bash

# 批量服务器初始化脚本
# 支持系统: Debian/Ubuntu, RHEL/CentOS

# 检查是否为root用户
if [ "$(id -u)" -ne 0 ]; then
    echo "请使用root用户运行此脚本!"
    exit 1
fi

# 定义系统类型变量
SYSTEM_TYPE=""
if [ -f /etc/os-release ]; then
    . /etc/os-release
    SYSTEM_TYPE=$ID
fi

# 初始化函数
initialize_system() {
    echo "开始系统初始化..."

    # 更新系统软件包
    case $SYSTEM_TYPE in
      ubuntu|debian)
            apt update -y && apt upgrade -y
            ;;
      centos|rhel|fedora)
            yum update -y
            ;;
      *)
            echo "不支持的操作系统: $SYSTEM_TYPE"
            exit 1
            ;;
    esac

    # 安装常用工具
    case $SYSTEM_TYPE in
      ubuntu|debian)
            apt install -y curl wget vim net-tools git
            ;;
      centos|rhel|fedora)
            yum install -y curl wget vim net-tools git
            ;;
    esac

    # 配置时区
    timedatectl set-timezone Asia/Shanghai

    # 禁用SELinux(仅RHEL系)
    if [ "$SYSTEM_TYPE" = "centos" ] || [ "$SYSTEM_TYPE" = "rhel" ]; then
      setenforce 0
      sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config
    fi

    # 配置SSH安全
    sed -i 's/#*PermitRootLogin yes/PermitRootLogin no/' /etc/ssh/sshd_config
    sed -i 's/#*PasswordAuthentication yes/PasswordAuthentication no/' /etc/ssh/sshd_config
    systemctl restart sshd

    # 配置防火墙(UFW或firewalld)
    case $SYSTEM_TYPE in
      ubuntu|debian)
            ufw allow 22/tcp
            ufw enable
            ;;
      centos|rhel|fedora)
            firewall-cmd --permanent --add-service=ssh
            firewall-cmd --reload
            ;;
    esac

    # 创建普通用户并配置sudo权限
    USERNAME="deploy"
    if ! id "$USERNAME" &>/dev/null; then
      useradd -m -s /bin/bash $USERNAME
      echo "$USERNAME ALL=(ALL) NOPASSWD:ALL" | tee /etc/sudoers.d/$USERNAME
      chmod 0440 /etc/sudoers.d/$USERNAME
    fi

    echo "系统初始化完成!"
}

# 主程序
initialize_system

# 可选:添加更多自定义配置(如NTP配置、内核参数调整等)
# ...

exit 0

脚本说明:

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


使用方法:

[*]将脚本保存为initialize.sh
[*]赋予执行权限:chmod +x initialize.sh
[*]以root用户运行:./initialize.sh


扩展建议:

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


注意事项:

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


这个脚本可以作为基础模板,根据您的具体需求进行修改和扩展。
页: [1]
查看完整版本: 批量服务器系统初始化配置自动化脚本