#!/bin/bash # 颜色定义 GREEN='\033[1;32m' RED='\033[1;31m' YELLOW='\033[1;33m' NC='\033[0m' # 重置颜色 # 日志函数 - 绿色输出 log_info() { echo -e "${GREEN}[INFO] $1${NC}" } # 错误函数 - 红色输出 log_error() { echo -e "${RED}[ERROR] $1${NC}" } # 警告函数 - 黄色输出 log_warning() { echo -e "${YELLOW}[WARNING] $1${NC}" } # 安装系统常用工具 install_sysadmin_tools() { log_info "[01]-安装系统常用工具包" apt update &>/dev/null; NEEDRESTART_MODE=a DEBIAN_FRONTEND=noninteractive apt install net-tools ipmitool lrzsz iotop iftop zip unzip jq build-essential lldpd nfs-common -y &>/dev/null; log_info "[01]-常用工具包安装---------------------已完成!" } # 禁用apt的定期更新 disable_apt_periodic_updates() { log_info "[02]-禁用Apt定期更新功能" # 修改10periodic配置文件,将所有的1改为0,禁用自动更新检查 sed -i 's/1/0/g' /etc/apt/apt.conf.d/10periodic &>/dev/null; # 修改20auto-upgrades配置文件,将所有的1改为0,禁用自动升级 sed -i 's/1/0/g' /etc/apt/apt.conf.d/20auto-upgrades &>/dev/null; log_info "[02]-禁用Apt定期更新功能----------------已完成!" } # 设置系统时区为上海 set_timezone_to_shanghai() { log_info "[03]-设置系统时区为上海时区" # 使用timedatectl命令设置系统时区为Asia/Shanghai timedatectl set-timezone Asia/Shanghai log_info "[03]-设置系统时区为上海时区-------------已完成!" } # 同步硬件时钟和系统时钟 synchronize_hardware_clock() { log_info "[04]-同步系统硬件时钟操作中" # 使用hwclock命令将系统时间同步到硬件时钟 hwclock --systohc log_info "[04]-同步系统硬件时钟操作中-------------已完成!" } #关闭休眠 off_sleep(){ log_info "[05]-执行关闭系统休眠操作" systemctl mask sleep.target suspend.target hibernate.target hybrid-sleep.target &>> /tmp/2.log log_info "[05]-执行关闭系统休眠操作---------------已完成!" } # 删除"ubuntu"用户 remove_ubuntu_user() { log_info "[11]-删除'ubuntu'用户..." # 使用userdel命令删除ubuntu用户,并递归删除其主目录 # # &> /dev/null用于忽略可能的错误输出(例如用户不存在的情况) pkill -9 -u ubuntu &> /dev/null userdel -r ubuntu &> /dev/null log_info "[11]-删除'ubuntu'用户----------------已完成!" } #锁定版本号 lock_current_kernel(){ log_info "[06]-执行系统内核锁定操作" # 自动锁定当前运行的内核版本 CURRENT_KERNEL=$(uname -r) GRUB_FILE="/etc/default/grub" # 检查是否已锁定 if ! grep -q "GRUB_DEFAULT=.*$CURRENT_KERNEL" "$GRUB_FILE"; then # 备份并修改GRUB配置 cp -f "$GRUB_FILE" "${GRUB_FILE}.bak" sed -i '/GRUB_DEFAULT=/c\GRUB_DEFAULT="Advanced options for Ubuntu>Ubuntu, with Linux '${CURRENT_KERNEL}'"' "$GRUB_FILE" update-grub &>/dev/null log_info "[06]-执行系统内核锁定操作---------------已完成!" else log_info "[06]-执行系统内核锁定操作---------------已完成!" fi } # 自动扩展根逻辑卷至最大可用空间 extend_root_volume() { log_info "[07]-执行根分区扩容操作" local root_lv=$(df / | tail -1 | awk '{print $1}') # 检查是否为LVM逻辑卷 if ! echo "$root_lv" | grep -q '/dev/mapper/'; then echo "[07]-错误:当前根分区不是LVM逻辑卷" >&2 return 1 fi # 扩展逻辑卷并调整文件系统 #log_info "扩展逻辑卷: $root_lv" if lvresize --extents +100%FREE --resizefs "$root_lv" &>/dev/null; then root_lvsize=$(df -h / | awk 'NR==2 {print "磁盘磁盘根分区大小:",$2}') log_info "[07]-执行根分区扩容操作-----------------已完成!" else log_info "[07]]-执行根分区扩容操作-----------------失败!" return 1 fi } # 禁止显卡驱动 disable_nouveau_driver() { log_info "[08]-禁止nouveau显卡驱动" # 创建blacklist-nouveau.conf文件,添加禁止nouveau驱动的配置 cat > /etc/modprobe.d/blacklist-nouveau.conf << EOF blacklist nouveau blacklist lbm-nouveau options nouveau modeset=0 alias nouveau off alias lbm-nouveau off EOF # 创建nouveau-kms.conf文件,禁用nouveau的KMS(内核模式设置) cat > /etc/modprobe.d/nouveau-kms.conf << EOF options nouveau modeset=0 EOF # 更新initramfs,使驱动禁用配置生效 update-initramfs -u &> /dev/null log_info "[08]-禁止nouveau显卡驱动----------------已完成!" } # 更改GRUB配置并更新 update_grub_configuration() { log_info "[09]-配置 GRUB 网络接口命名" # 检查GRUB配置中是否已存在所需的网络接口命名设置 if ! grep -q 'GRUB_CMDLINE_LINUX_DEFAULT="net.ifnames=1 biosdevname=0"' /etc/default/grub; then # 如果不存在,则注释掉原有的GRUB_CMDLINE_LINUX_DEFAULT行 sed -i '/GRUB_CMDLINE_LINUX_DEFAULT=.*/s/^/#/' /etc/default/grub # 添加新的GRUB_CMDLINE_LINUX_DEFAULT行,启用传统网络接口命名 sed -i '/GRUB_CMDLINE_LINUX_DEFAULT=.*/a\GRUB_CMDLINE_LINUX_DEFAULT="net.ifnames=1 biosdevname=0"' /etc/default/grub fi # 再次检查配置是否已成功添加 if grep -q 'GRUB_CMDLINE_LINUX_DEFAULT="net.ifnames=1 biosdevname=0"' /etc/default/grub; then log_info "[09]-配置 GRUB 网络接口命名-------------已完成!" else log_error "[09]-GRUB 网络接口命名配置失败" exit 1 fi # 更新GRUB引导加载程序配置 update-grub &> /dev/null } #修改主机名 rename_hostname(){ log_info "[09]-修改主机名称" IP=$(ip addr | awk '/^[0-9]+: / {}; /inet.*global/ {print gensub(/(.*)\/(.*)/, "\\1", "g", $2)}' | grep `ip route | grep default | awk '{print $3}' | awk -F. '{print $1"."$2}' | head -1` | head -1 | sed 's/\./-/g') hostnamectl set-hostname ${IP} log_info "[09]-主机名称修改操作-------------------已完成!" } #清理历史命令 clear_history(){ log_info "[10]-执行清理历史命令" > ~/.bash_history history -c log_info "[10]-执行清理历史命令-------------------已完成!" } # 主函数:按顺序执行所有配置步骤 main() { log_info "|#################开始系统配置#################|" install_sysadmin_tools disable_apt_periodic_updates set_timezone_to_shanghai synchronize_hardware_clock off_sleep lock_current_kernel extend_root_volume disable_nouveau_driver update_grub_configuration rename_hostname remove_ubuntu_user clear_history log_info "|##############################################|" log_info "|操作完成后,请通过以下命令重启系统!" log_info "|ipmitool chassis power cycle" log_info "|#################系统配置完成!###############|" } # 执行主函数 main