From 8a9bd23a33bcef0fd2c607dd6201f0da32a4800e Mon Sep 17 00:00:00 2001 From: zwb Date: Mon, 17 Mar 2025 16:19:57 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=20MD/centos.sh?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- MD/centos.sh | 145 ++++++++++++++++++++++++++++++++------------------- 1 file changed, 90 insertions(+), 55 deletions(-) diff --git a/MD/centos.sh b/MD/centos.sh index 049ff68..9b1f79b 100644 --- a/MD/centos.sh +++ b/MD/centos.sh @@ -1,78 +1,109 @@ #!/usr/bin/bash +# 定义彩色输出函数 +color_echo() { + case $1 in + "red") + echo -e "\033[31m$2\033[0m" + ;; + "green") + echo -e "\033[32m$2\033[0m" + ;; + "yellow") + echo -e "\033[33m$2\033[0m" + ;; + "blue") + echo -e "\033[34m$2\033[0m" + ;; + "purple") + echo -e "\033[35m$2\033[0m" + ;; + "cyan") + echo -e "\033[36m$2\033[0m" + ;; + "white") + echo -e "\033[37m$2\033[0m" + ;; + *) + echo "$2" + ;; + esac +} + # 输出菜单 list() { - echo "--------------------------------------" - echo "------------性能优化工具箱------------" - echo "--------------------------------------" - echo "1. 更换 YUM 源" - echo "2. 关闭防火墙" - echo "3. 时间同步" - echo "4. 创建用户" - echo "5. 删除用户" - echo "6. 安装常用软件" - echo "7. 内存使用情况" - echo "8. 磁盘使用情况" - echo "9. 服务器信息" - echo "10 CPU使用情况" - echo "11. 退出" - echo "--------------------------------------" + color_echo "cyan" "--------------------------------------" + color_echo "cyan" "------------性能优化工具箱------------" + color_echo "cyan" "--------------------------------------" + color_echo "green" "1. 更换 YUM 源" + color_echo "green" "2. 关闭防火墙" + color_echo "green" "3. 时间同步" + color_echo "green" "4. 创建用户" + color_echo "green" "5. 删除用户" + color_echo "green" "6. 安装常用软件" + color_echo "green" "7. 内存使用情况" + color_echo "green" "8. 磁盘使用情况" + color_echo "green" "9. 服务器信息" + color_echo "green" "10 CPU使用情况" + color_echo "green" "11. 退出" + color_echo "cyan" "--------------------------------------" } # 更换 YUM 源 yuan() { - echo "正在更换 YUM 源..." + color_echo "yellow" "正在更换 YUM 源..." rm -rf /etc/yum.repos.d/* if curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo &>/dev/null && \ curl -o /etc/yum.repos.d/epel.repo https://mirrors.aliyun.com/repo/epel-7.repo &>/dev/null; then yum clean all yum makecache fast - echo "YUM 源更换完成!" + color_echo "green" "YUM 源更换完成!" else - echo "YUM 源更换失败,请检查网络或链接。" + color_echo "red" "YUM 源更换失败,请检查网络或链接。" fi } # 关闭防火墙 fire() { - echo "正在关闭防火墙..." + color_echo "yellow" "正在关闭防火墙..." systemctl stop firewalld systemctl disable firewalld setenforce 0 # 临时关闭 SELinux sed -ri 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config # 永久关闭 SELinux - echo "防火墙已关闭,SELinux 已禁用(需重启生效)。" + color_echo "green" "防火墙已关闭,SELinux 已禁用(需重启生效)。" } # 时间同步 timed() { - echo "正在安装和同步时间..." + color_echo "yellow" "正在安装和同步时间..." if yum -y install ntpdate &>/dev/null; then ntpdate ntp1.aliyun.com - echo "时间同步成功!" + color_echo "green" "时间同步成功!" else - echo "时间同步失败,请检查网络连接或 YUM 配置。" + color_echo "red" "时间同步失败,请检查网络连接或 YUM 配置。" fi } # 创建用户 user() { - read -p "请输入要创建的用户名:" name + read -p "$(color_echo "yellow" "请输入要创建的用户名:")" name if id "$name" &>/dev/null; then - echo "用户 $name 已存在,请勿重复创建。" + color_echo "red" "用户 $name 已存在,请勿重复创建。" else useradd "$name" userpasswd=$(openssl rand -base64 8) echo "$userpasswd" | passwd --stdin "$name" &>/dev/null if [ $? -eq 0 ]; then echo "用户名:$name,密码:$userpasswd" >> /opt/user.txt - echo "用户 $name 创建成功,密码已存储在 /opt/user.txt 中。" + color_echo "green" "用户 $name 创建成功,密码已存储在 /opt/user.txt 中。" else - echo "用户创建失败,请检查系统配置。" + color_echo "red" "用户创建失败,请检查系统配置。" fi fi } + delete_user() { - read -p "请输入要删除的用户名:" name + read -p "$(color_echo "yellow" "请输入要删除的用户名:")" name # 检查用户是否存在 if id "$name" &>/dev/null; then @@ -81,24 +112,25 @@ delete_user() { if [ $? -eq 0 ]; then # 如果用户删除成功,尝试从记录文件中移除该用户的密码信息 sed -i "/^用户名:$name,/d" /opt/user.txt - echo "用户 $name 已成功删除。" + color_echo "green" "用户 $name 已成功删除。" else - echo "用户删除失败,请检查系统配置。" + color_echo "red" "用户删除失败,请检查系统配置。" fi else - echo "用户 $name 不存在,无需删除。" + color_echo "red" "用户 $name 不存在,无需删除。" fi } # 安装常用软件 anzhuang() { - echo "正在安装常用软件(vim、lsof、unzip、wget)..." + color_echo "yellow" "正在安装常用软件(vim、lsof、unzip、wget)..." if yum -y install vim lsof unzip wget &>/dev/null; then - echo "常用软件安装完成!" + color_echo "green" "常用软件安装完成!" else - echo "软件安装失败,请检查 YUM 源配置。" + color_echo "red" "软件安装失败,请检查 YUM 源配置。" fi } + mem() { mem_total=$(free -m | awk 'NR==2 {print $2}') mem_used=$(free -m | awk 'NR==2 {print $3}') @@ -106,56 +138,59 @@ mem() { mem_cache=$(free -m | awk 'NR==2 {print $6}') mem_s=$((mem_used * 100 / mem_total)) mem_f=$((100 - mem_s)) - echo "内存的使用率:$mem_s%" - echo "内存的总量: $mem_total MB" - echo "内存的空闲率: $mem_f%" - echo "内存的缓存量: $mem_cache MB" - echo "内存的空闲量: $mem_free MB" + color_echo "green" "内存的使用率:$mem_s%" + color_echo "green" "内存的总量: $mem_total MB" + color_echo "green" "内存的空闲率: $mem_f%" + color_echo "green" "内存的缓存量: $mem_cache MB" + color_echo "green" "内存的空闲量: $mem_free MB" } + disk() { - read -p "请输入分区名称:" name + read -p "$(color_echo "yellow" "请输入分区名称:")" name case $name in "/") - df -Th | awk 'NR==2 {print "总量:"$3,"使用:"$4,"空闲:"$5}' + df -Th | awk 'NR==2 {print "总量:"$3,"使用:"$4,"空闲:"$5}' | while read line; do color_echo "green" "$line"; done ;; "/boot") - df -Th | awk 'NR==7 {print "总量:"$3,"使用:"$4,"空闲:"$5}' + df -Th | awk 'NR==7 {print "总量:"$3,"使用:"$4,"空闲:"$5}' | while read line; do color_echo "green" "$line"; done ;; *) - echo "无效的分区名称" + color_echo "red" "无效的分区名称" ;; esac } + system_info() { - cat /etc/redhat-release | awk '{print "系统版本号:"$4}' - echo "内核版本为:`uname -r`" - ip a | grep "2:" | awk -F: '{print "网卡名称:"$2}' - ip a | grep "inet " | awk '{print $2}' | awk -F "/" '{print "IP地址是:"$1}' + cat /etc/redhat-release | awk '{print "系统版本号:"$4}' | while read line; do color_echo "green" "$line"; done + color_echo "green" "内核版本为:`uname -r`" + ip a | grep "2:" | awk -F: '{print "网卡名称:"$2}' | while read line; do color_echo "green" "$line"; done + ip a | grep "inet " | awk '{print $2}' | awk -F "/" '{print "IP地址是:"$1}' | while read line; do color_echo "green" "$line"; done } + cpu_info() { - w | awk -F: 'NR==1 {print "CPU的平均负载:"$NF}' - vmstat | awk 'NR==3 {print "CPU空闲率:"$(NF-2)}' + w | awk -F: 'NR==1 {print "CPU的平均负载:"$NF}' | while read line; do color_echo "green" "$line"; done + vmstat | awk 'NR==3 {print "CPU空闲率:"$(NF-2)}' | while read line; do color_echo "green" "$line"; done cpu_id=$(vmstat | awk 'NR==3 {print $(NF-2)}') cpu_free=$((100 - cpu_id)) - echo "CPU使用率: $cpu_free%" + color_echo "green" "CPU使用率: $cpu_free%" } # 主循环 while true; do list - read -p "请输入您的选项(1-10):" num + read -p "$(color_echo "yellow" "请输入您的选项(1-11):")" num case $num in 1) yuan; sleep 2 ;; 2) fire; sleep 2 ;; 3) timed; sleep 2 ;; 4) user; sleep 2 ;; - 5) delete_user;sleep 2;; + 5) delete_user; sleep 2;; 6) anzhuang; sleep 2 ;; 7) mem; sleep 2;; 8) disk; sleep 2;; 9) system_info; sleep 2;; - 10)cpu_info; sleep 2;; - q) echo "退出工具箱,感谢使用!"; exit ;; - *) echo "输入无效,请输入数字 1-6 选择功能。"; sleep 2 ;; + 10) cpu_info; sleep 2;; + 11) color_echo "cyan" "退出工具箱,感谢使用!"; exit ;; + *) color_echo "red" "输入无效,请输入数字 1-11 选择功能。"; sleep 2 ;; esac done \ No newline at end of file