批量服务器系统初始化配置自动化脚本
以下是一个用于批量服务器系统初始化配置的自动化脚本示例,结合了常见的初始化任务(如更新系统、配置网络、设置防火墙、创建用户等)。该脚本适用于基于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]