Rocky、CentOS和Ubuntu系统初始化脚本v7版

2024-03-16 07:30

本文主要是介绍Rocky、CentOS和Ubuntu系统初始化脚本v7版,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Rocky、CentOS和Ubuntu系统初始化脚本

Shell脚本源码地址:

Gitee:https://gitee.com/raymond9/shell
Github:https://github.com/raymond999999/shell

可以去上面的Gitee或Github仓库代码拉取脚本。
在这里插入图片描述

支持的功能和系统:

支持的功能支持的系统
修改网卡名、修改IP地址和网关地址(单网卡和双网卡)、设置主机名、设置镜像仓库、Minimal安装建议安装软件、关闭防火墙、禁用SELinux、禁用SWAP、设置系统时区、优化资源限制参数、优化内核参数、优化SSH、更改SSH端口号、设置系统别名、设置vimrc配置文件、安装邮件服务并配置、设置PS1、设置默认文本编辑器为vim、设置history格式、禁用ctrl+alt+del重启、Ubuntu设置root用户登录、Ubuntu卸载无用软件包。CentOS 7、CentOS Stream 8和9、Ubuntu 18.04/20.04/22.04、Rocky 8和9

版本更新日志:

版本功能
v7版更新内容1.由于v6版修改的比较仓促,其中设置镜像仓库有bug,修复了其中的bug,而且设置镜像仓库可以重复修改;修复了设置ip不能成功的bug;优化了设置系统别名的bug;修复了“优化内核参数”的bug;
2.分别有reset_v7_1版本(镜像仓库采用sed直接替换网址方式;修改ip地址采用nmcli命令方式)和reset_v7_2版本(镜像仓库和修改ip地址采用配置文件方式)。
v6版更新内容1.由于CentOS 6和8官方已经停止支持,也就移除了其相关内容;
2.分别有reset_v6_1版本(镜像仓库采用sed直接替换网址方式;修改ip地址采用nmcli命令方式)和reset_v6_2版本(镜像仓库和修改ip地址采用配置文件方式);
3.reset_v6_1添加了CentOS Stream 9用Perl语言更改镜像源的方法,优化了某些镜像仓库失效的bug,修改了某些bug。
v5版更新内容1.优化了某些镜像仓库失效的bug;
2.CentOS stream 9和Rocky 9修改ip的方式更改,做了相应的修改;
3.分别有reset_v5_1版本(镜像仓库采用sed直接替换网址方式;修改ip地址采用nmcli命令方式)和reset_v5_2版本(镜像仓库和修改ip地址采用配置文件方式);
4.把设置PS1、设置默认文本编辑器为vim和设置history格式单独分开;
5.修改了某些bug。
v4版更新内容1.添加对CentOS stream 9、Rocky 9和Ubuntu 22.04系统的支持;
2.添加Ubuntu 22.04修改IP地址和网关地址、双网卡更改IP地址;
3.添加禁用ctrl+alt+del重启功能;
4.修改了某些bug。
v3版更新内容1.添加双网卡更改IP地址;
2.添加设置系统时区。
v2版更新内容1.添加对CentOS stream 8系统支持,添加了CentOS stream 8镜像仓库;
2.由于CentOS 8已被废弃,修改成centos-vault的历史镜像仓库;
3.优化Ubuntu 20.04禁用swap不生效的问题。
v1版支持功能1.支持CentOS 6/7/8、Ubuntu 18.04/20.04、Rocky 8系统;
2.支持功能禁用SELinux、关闭防火墙、优化SSH、设置系统别名、设置vimrc配置文件、设置软件包仓库、Minimal安装建议安装软件、安装邮件服务并配置邮件、更改SSH端口号、修改网卡名、修改IP地址和网关地址、设置主机名、设置PS1和系统环境变量、禁用SWAP、优化内核参数、优化资源限制参数、Ubuntu设置root用户登录、Ubuntu卸载无用软件包。

下面是reset_v7_1脚本内容:

[root@rocky9 ~]# cat reset_v7_1.sh
#!/bin/bash
#
#***************************************************************************************************
#Author:        Raymond
#QQ:            88563128
#Date:          2024-02-25
#FileName:      reset_v7_1.sh
#MIRROR:        raymond.blog.csdn.net
#Description:   reset for CentOS 7 & CentOS Stream 8/9 & Ubuntu 18.04/20.04/22.04 & Rocky 8/9
#Copyright (C): 2024 All rights reserved
#***************************************************************************************************
COLOR="echo -e \\033[01;31m"
END='\033[0m'os(){OS_ID=`sed -rn '/^NAME=/s@.*="([[:alpha:]]+).*"$@\1@p' /etc/os-release`OS_NAME=`sed -rn '/^NAME=/s@.*="([[:alpha:]]+) (.*)"$@\2@p' /etc/os-release`OS_RELEASE=`sed -rn '/^VERSION_ID=/s@.*="?([0-9.]+)"?@\1@p' /etc/os-release`OS_RELEASE_VERSION=`sed -rn '/^VERSION_ID=/s@.*="?([0-9]+)\.?.*"?@\1@p' /etc/os-release`
}set_rocky_centos_eth(){if [ ${OS_RELEASE_VERSION} == "7" -o ${OS_RELEASE_VERSION} == "8" ];thenETHNAME=`ip addr | awk -F"[ :]" '/^2/{print $3}'`if grep -Eqi "(net\.ifnames|biosdevname)" /etc/default/grub;then${COLOR}"${OS_ID} ${OS_RELEASE} 网卡名配置文件已修改,不用修改!"${END}else# 修改网卡名称配置文件sed -ri.bak '/^GRUB_CMDLINE_LINUX=/s@"$@ net.ifnames=0 biosdevname=0"@' /etc/default/grubgrub2-mkconfig -o /boot/grub2/grub.cfg >& /dev/null# 修改网卡文件名mv /etc/sysconfig/network-scripts/ifcfg-${ETHNAME} /etc/sysconfig/network-scripts/ifcfg-eth0${COLOR}"${OS_ID} ${OS_RELEASE} 网卡名已修改成功,10秒后,机器会自动重启!"${END}sleep 10 && shutdown -r nowfi   else${COLOR}"${OS_ID} ${OS_RELEASE} 不能修改网卡名!"${END} fi
}set_ubuntu_eth(){# 修改网卡名称配置文件if grep -Eqi "(net\.ifnames|biosdevname)" /etc/default/grub;then${COLOR}"${OS_ID} ${OS_RELEASE} 网卡名配置文件已修改,不用修改!"${END}elsesed -ri.bak '/^GRUB_CMDLINE_LINUX=/s@"$@net.ifnames=0 biosdevname=0"@' /etc/default/grubgrub-mkconfig -o /boot/grub/grub.cfg >& /dev/null${COLOR}"${OS_ID} ${OS_RELEASE} 网卡名已修改成功,请重新启动系统后才能生效!"${END}fi
}set_eth(){if [ ${OS_ID} == "CentOS" -o ${OS_ID} == "Rocky" ];thenset_rocky_centos_ethelseset_ubuntu_ethfi
}check_ip(){local IP=$1VALID_CHECK=$(echo ${IP}|awk -F. '$1<=255&&$2<=255&&$3<=255&&$4<=255{print "yes"}')if echo ${IP}|grep -E "^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$" >/dev/null; thenif [ ${VALID_CHECK} == "yes" ]; thenecho "IP ${IP}  available!"return 0elseecho "IP ${IP} not available!"return 1fielseecho "IP format error!"return 1fi
}set_rocky_centos_ip(){ETHNAME=`ip addr | awk -F"[ :]" '/^2/{print $3}'`CONNECTION_NAME=`nmcli dev | awk 'NR==2{print $4,$5,$6}'`while true; doread -p "请输入IP地址: " IPcheck_ip ${IP}[ $? -eq 0 ] && breakdoneread -p "请输入子网掩码位数: " C_PREFIXwhile true; doread -p "请输入网关地址: " GATEWAYcheck_ip ${GATEWAY}[ $? -eq 0 ] && breakdone${COLOR}"${OS_ID} ${OS_RELEASE} IP地址、网关地址和DNS已修改成功,请使用新IP重新登录!"${END}if [ ${OS_RELEASE_VERSION} == "7" -o ${OS_RELEASE_VERSION} == "8" ];thennmcli connection modify "${CONNECTION_NAME}" con-name ${ETHNAME} && nmcli connection delete ${ETHNAME} >& /dev/null && nmcli connection add type ethernet con-name ${ETHNAME} ifname ${ETHNAME} ipv4.method manual ipv4.address "${IP}/${C_PREFIX}" ipv4.gateway "${GATEWAY}" ipv4.dns "223.5.5.5,180.76.76.76" autoconnect yes >& /dev/null && nmcli con reload && nmcli dev up ${ETHNAME} >& /dev/nullelsenmcli connection delete ${ETHNAME} >& /dev/null && nmcli connection add type ethernet con-name ${ETHNAME} ifname ${ETHNAME} ipv4.method manual ipv4.address "${IP}/${C_PREFIX}" ipv4.gateway "${GATEWAY}" ipv4.dns "223.5.5.5,180.76.76.76" autoconnect yes >& /dev/null && nmcli con reload && nmcli dev up ${ETHNAME} >& /dev/nullfi
}set_ubuntu_ip(){while true; doread -p "请输入IP地址: " IPcheck_ip ${IP}[ $? -eq 0 ] && breakdoneread -p "请输入子网掩码位数: " U_PREFIXwhile true; doread -p "请输入网关地址: " GATEWAYcheck_ip ${GATEWAY}[ $? -eq 0 ] && breakdoneif [ ${OS_RELEASE_VERSION} == "18" ];thencat > /etc/netplan/01-netcfg.yaml <<-EOF
network:version: 2renderer: networkdethernets:eth0:dhcp4: nodhcp6: noaddresses: [${IP}/${U_PREFIX}] gateway4: ${GATEWAY}nameservers:addresses: [223.5.5.5, 180.76.76.76]
EOFelif [ ${OS_RELEASE_VERSION} == "20" ];thencat > /etc/netplan/00-installer-config.yaml <<-EOF
network:version: 2renderer: networkdethernets:eth0:dhcp4: nodhcp6: noaddresses: [${IP}/${U_PREFIX}] gateway4: ${GATEWAY}nameservers:addresses: [223.5.5.5, 180.76.76.76]
EOFelsecat > /etc/netplan/00-installer-config.yaml <<-EOF
network:version: 2renderer: networkdethernets:eth0:dhcp4: nodhcp6: noaddresses: [${IP}/${U_PREFIX}]routes:- to: defaultvia: ${GATEWAY}nameservers:addresses: [223.5.5.5, 180.76.76.76]
EOFfi    ${COLOR}"${OS_ID} ${OS_RELEASE} IP地址、网关地址和DNS已修改成功,请重新启动系统后生效!"${END}
}set_ip(){if [ ${OS_ID} == "CentOS" -o ${OS_ID} == "Rocky" ];thenset_rocky_centos_ipelseset_ubuntu_ipfi
}set_dual_rocky_centos_ip(){ETHNAME=`ip addr | awk -F"[ :]" '/^2/{print $3}'`ETHNAME2=`ip addr | awk -F"[ :]" '/^3/{print $3}'`CONNECTION_NAME1=`nmcli dev | awk 'NR==2{print $4,$5,$6}'`CONNECTION_NAME2=`nmcli dev | awk 'NR==3{print $4,$5,$6}'`while true; doread -p "请输入第一块网卡IP地址: " IPcheck_ip ${IP}[ $? -eq 0 ] && breakdoneread -p "请输入子网掩码位数: " C_PREFIXwhile true; doread -p "请输入网关地址: " GATEWAYcheck_ip ${GATEWAY}[ $? -eq 0 ] && breakdonewhile true; doread -p "请输入第二块网卡IP地址: " IP2check_ip ${IP2}[ $? -eq 0 ] && breakdoneread -p "请输入子网掩码位数: " C_PREFIX2${COLOR}"${OS_ID} ${OS_RELEASE} IP地址、网关地址和DNS已修改成功,请使用新IP重新登录!"${END}if [ ${OS_RELEASE_VERSION} == "7" -o ${OS_RELEASE_VERSION} == "8" ];thennmcli connection modify "${CONNECTION_NAME1}" con-name ${ETHNAME} && nmcli connection delete ${ETHNAME} >& /dev/null && nmcli connection add type ethernet con-name ${ETHNAME} ifname ${ETHNAME} ipv4.method manual ipv4.address "${IP}/${C_PREFIX}" ipv4.gateway "${GATEWAY}" ipv4.dns "223.5.5.5,180.76.76.76" autoconnect yes >& /dev/null && nmcli connection modify "${CONNECTION_NAME2}" con-name ${ETHNAME2} && nmcli connection delete ${ETHNAME2} >& /dev/null && nmcli connection add type ethernet con-name ${ETHNAME2} ifname ${ETHNAME2} ipv4.method manual ipv4.address "${IP2}/${C_PREFIX2}" autoconnect yes >& /dev/null && nmcli con reload && nmcli dev up ${ETHNAME} ${ETHNAME2} >& /dev/nullelsenmcli connection delete ${ETHNAME} >& /dev/null && nmcli connection add type ethernet con-name ${ETHNAME} ifname ${ETHNAME} ipv4.method manual ipv4.address "${IP}/${C_PREFIX}" ipv4.gateway "${GATEWAY}" ipv4.dns "223.5.5.5,180.76.76.76" autoconnect yes >& /dev/null && nmcli connection modify "${CONNECTION_NAME2}" con-name ${ETHNAME2} && nmcli connection delete ${ETHNAME2} >& /dev/null && nmcli connection add type ethernet con-name ${ETHNAME2} ifname ${ETHNAME2} ipv4.method manual ipv4.address "${IP2}/${C_PREFIX2}" autoconnect yes >& /dev/null && nmcli con reload && nmcli dev up ${ETHNAME} ${ETHNAME2} >& /dev/nullfi
}set_dual_ubuntu_ip(){while true; doread -p "请输入第一块网卡IP地址: " IPcheck_ip ${IP}[ $? -eq 0 ] && breakdoneread -p "请输入子网掩码位数: " U_PREFIXwhile true; doread -p "请输入网关地址: " GATEWAYcheck_ip ${GATEWAY}[ $? -eq 0 ] && breakdonewhile true; doread -p "请输入第二块网卡IP地址: " IP2check_ip ${IP2}[ $? -eq 0 ] && breakdoneread -p "请输入子网掩码位数: " U_PREFIX2if [ ${OS_RELEASE_VERSION} == "18" ];thencat > /etc/netplan/01-netcfg.yaml <<-EOF
network:version: 2renderer: networkdethernets:eth0:dhcp4: nodhcp6: noaddresses: [${IP}/${U_PREFIX}] gateway4: ${GATEWAY}nameservers:addresses: [223.5.5.5, 180.76.76.76]eth1:dhcp4: nodhcp6: noaddresses: [${IP2}/${U_PREFIX2}] 
EOFelif [ ${OS_RELEASE_VERSION} == "20" ];thencat > /etc/netplan/00-installer-config.yaml <<-EOF
network:version: 2renderer: networkdethernets:eth0:dhcp4: nodhcp6: noaddresses: [${IP}/${U_PREFIX}] gateway4: ${GATEWAY}nameservers:addresses: [223.5.5.5, 180.76.76.76]eth1:dhcp4: nodhcp6: noaddresses: [${IP2}/${U_PREFIX2}] 
EOFelsecat > /etc/netplan/00-installer-config.yaml <<-EOF
network:version: 2renderer: networkdethernets:eth0:dhcp4: nodhcp6: noaddresses: [${IP}/${U_PREFIX}] routes:- to: defaultvia: ${GATEWAY}nameservers:addresses: [223.5.5.5, 180.76.76.76]eth1:dhcp4: nodhcp6: noaddresses: [${IP2}/${U_PREFIX2}] 
EOFfi${COLOR}"${OS_ID} ${OS_RELEASE} IP地址、网关地址和DNS已修改成功,请重新启动系统后生效!"${END}
}set_dual_ip(){if [ ${OS_ID} == "CentOS" -o ${OS_ID} == "Rocky" ];thenset_dual_rocky_centos_ipelseset_dual_ubuntu_ipfi
}set_hostname(){read -p "请输入主机名: " HOSThostnamectl set-hostname ${HOST}${COLOR}"${OS_ID} ${OS_RELEASE} 主机名设置成功,请重新登录生效!"${END}
}aliyun(){MIRROR=mirrors.aliyun.com
}huawei(){MIRROR=repo.huaweicloud.com
}tencent(){MIRROR=mirrors.tencent.com
}tuna(){MIRROR=mirrors.tuna.tsinghua.edu.cn
}netease(){MIRROR=mirrors.163.com
}sohu(){MIRROR=mirrors.sohu.com
}nju(){MIRROR=mirrors.nju.edu.cn
}ustc(){MIRROR=mirrors.ustc.edu.cn
}sjtu(){MIRROR=mirrors.sjtug.sjtu.edu.cn
}pku(){MIRROR=mirrors.pku.edu.cn
}xjtu(){MIRROR=mirrors.xjtu.edu.cn
}set_yum_rocky8_9(){MIRROR_URL=`echo ${MIRROR} | awk -F"." '{print $2}'`OLD_MIRROR=$(sed -rn '/^.*baseurl=/s@.*=http.*://(.*)/(.*)/\$releasever/.*/$@\1@p' /etc/yum.repos.d/[Rr]ocky*.repo | head -1)OLD_DIR=$(sed -rn '/^.*baseurl=/s@.*=http.*://(.*)/(.*)/\$releasever/.*/$@\2@p' /etc/yum.repos.d/[Rr]ocky*.repo | head -1)if [ ${MIRROR_URL} == "aliyun" -o ${MIRROR_URL} == "xjtu" ];thenif [ ${OLD_DIR} == '$contentdir' ];thensed -i.bak -e 's|^mirrorlist=|#mirrorlist=|g' -e 's|^#baseurl=http://dl.rockylinux.org/$contentdir|baseurl=https://'${MIRROR}'/rockylinux|g' /etc/yum.repos.d/[Rr]ocky*.repoelif [ ${OLD_DIR} == 'rocky' ];thensed -i -e 's|^baseurl=https://'${OLD_MIRROR}'/rocky|baseurl=https://'${MIRROR}'/rockylinux|g' /etc/yum.repos.d/[Rr]ocky*.repoelif [ ${OLD_DIR} == 'Rocky' ];thensed -i -e 's|^baseurl=https://'${OLD_MIRROR}'/Rocky|baseurl=https://'${MIRROR}'/rockylinux|g' /etc/yum.repos.d/[Rr]ocky*.repoelsesed -i -e 's|^baseurl=https://'${OLD_MIRROR}'/rockylinux|baseurl=https://'${MIRROR}'/rockylinux|g' /etc/yum.repos.d/[Rr]ocky*.repofielif [ ${MIRROR_URL} == "sohu" ];thenif [ ${OLD_DIR} == '$contentdir' ];thensed -i.bak -e 's|^mirrorlist=|#mirrorlist=|g' -e 's|^#baseurl=http://'${OLD_MIRROR}'/$contentdir|baseurl=https://'${MIRROR}'/Rocky|g' /etc/yum.repos.d/[Rr]ocky*.repoelif [ ${OLD_DIR} == 'rockylinux' ];thensed -i -e 's|^baseurl=https://'${OLD_MIRROR}'/rockylinux|baseurl=https://'${MIRROR}'/Rocky|g' /etc/yum.repos.d/[Rr]ocky*.repoelif [ ${OLD_DIR} == 'rocky' ];thensed -i -e 's|^baseurl=https://'${OLD_MIRROR}'/rocky|baseurl=https://'${MIRROR}'/Rocky|g' /etc/yum.repos.d/[Rr]ocky*.repo elsesed -i -e 's|^baseurl=https://'${OLD_MIRROR}'/Rocky|baseurl=https://'${MIRROR}'/Rocky|g' /etc/yum.repos.d/[Rr]ocky*.repofi	elseif [ ${OLD_DIR} == '$contentdir' ];thensed -i.bak -e 's|^mirrorlist=|#mirrorlist=|g' -e 's|^#baseurl=http://'${OLD_MIRROR}'/$contentdir|baseurl=https://'${MIRROR}'/rocky|g' /etc/yum.repos.d/[Rr]ocky*.repoelif [ ${OLD_DIR} == 'rockylinux' ];thensed -i -e 's|^baseurl=https://'${OLD_MIRROR}'/rockylinux|baseurl=https://'${MIRROR}'/rocky|g' /etc/yum.repos.d/[Rr]ocky*.repoelif [ ${OLD_DIR} == 'Rocky' ];thensed -i -e 's|^baseurl=https://'${OLD_MIRROR}'/Rocky|baseurl=https://'${MIRROR}'/rocky|g' /etc/yum.repos.d/[Rr]ocky*.repo elsesed -i -e 's|^baseurl=https://'${OLD_MIRROR}'/rocky|baseurl=https://'${MIRROR}'/rocky|g' /etc/yum.repos.d/[Rr]ocky*.repofifi${COLOR}"更新镜像源中,请稍等..."${END}dnf clean all &> /dev/null && dnf makecache &> /dev/null${COLOR}"${OS_ID} ${OS_RELEASE} YUM源设置完成!"${END}
}rocky8_9_base_menu(){while true;doecho -e "\E[$[RANDOM%7+31];1m"cat <<-EOF
1)阿里镜像源
2)网易镜像源
3)搜狐镜像源
4)南京大学镜像源
5)中科大镜像源
6)上海交通大学镜像源
7)北京大学镜像源
8)西安交通大学镜像源
9)退出
EOFecho -e '\E[0m'read -p "请输入镜像源编号(1-9): " NUMcase ${NUM} in1)aliyunset_yum_rocky8_9;;2)neteaseset_yum_rocky8_9;;3)sohuset_yum_rocky8_9;;4)njuset_yum_rocky8_9;;5)ustcset_yum_rocky8_9;;6)sjtuset_yum_rocky8_9;;7)pkuset_yum_rocky8_9;;8)xjtuset_yum_rocky8_9;;9)break;;*)${COLOR}"输入错误,请输入正确的数字(1-9)!"${END};;esacdone
}set_devel_rocky9(){dnf config-manager --set-enabled devel${COLOR}"更新镜像源中,请稍等..."${END}dnf clean all &> /dev/null && dnf makecache &> /dev/null${COLOR}"${OS_ID} ${OS_RELEASE} devel源设置完成!"${END}
}set_powertools_rocky_centos8(){dnf config-manager --set-enabled powertools${COLOR}"更新镜像源中,请稍等..."${END}dnf clean all &> /dev/null && dnf makecache &> /dev/null${COLOR}"${OS_ID} ${OS_RELEASE} powertools源设置完成!"${END}
}set_yum_centos_stream9_perl(){${COLOR}"由于CentOS Stream 9系统默认镜像源是Perl语言实现的,在更改镜像源之前先确保把'update_mirror.pl'文件和reset脚本放在同一个目录下,否则后面程序会退出,默认的CentOS Stream 9镜像源设置的是阿里云,要修改镜像源,请去'update_mirror.pl'文件里修改url变量!"${END}sleep 10PERL_FILE=update_mirror.plif [ ! -e ${PERL_FILE} ];then${COLOR}"缺少${PERL_FILE}文件"${END}exitelse${COLOR}"${PERL_FILE}文件已准备好,继续后续配置!"${END}       firpm -q perl &> /dev/null || { ${COLOR}"安装perl工具,请稍等..."${END};yum -y install perl &> /dev/null; }perl ./update_mirror.pl /etc/yum.repos.d/centos*.repo${COLOR}"更新镜像源中,请稍等..."${END}dnf clean all &> /dev/null && dnf makecache &> /dev/null${COLOR}"${OS_ID} ${OS_RELEASE} YUM源设置完成!"${END}
}set_yum_centos_stream9(){OLD_MIRROR=$(sed -rn '/^.*baseurl=/s@.*=http.*://(.*)/(.*)/\$releasever-stream/.*/$@\1@p' /etc/yum.repos.d/centos*.repo | head -1)sed -i -e 's|^baseurl=https://'${OLD_MIRROR}'|baseurl=https://'${MIRROR}'|g' /etc/yum.repos.d/centos*.repo${COLOR}"更新镜像源中,请稍等..."${END}dnf clean all &> /dev/null && dnf makecache &> /dev/null${COLOR}"${OS_ID} ${OS_RELEASE} YUM源设置完成!"${END}
}centos_stream9_base_menu(){while true;doecho -e "\E[$[RANDOM%7+31];1m"cat <<-EOF
1)阿里镜像源
2)华为镜像源
3)腾讯镜像源
4)清华镜像源
5)网易镜像源
6)南京大学镜像源
7)中科大镜像源
8)北京大学镜像源
9)退出
EOFecho -e '\E[0m'read -p "请输入镜像源编号(1-9): " NUMcase ${NUM} in1)aliyunset_yum_centos_stream9;;2)huaweiset_yum_centos_stream9;;3)tencentset_yum_centos_stream9;;4)tunaset_yum_centos_stream9;;5)neteaseset_yum_centos_stream9;;6)njuset_yum_centos_stream9;;7)ustcset_yum_centos_stream9;;8)pkuset_yum_centos_stream9;;9)break;;*)${COLOR}"输入错误,请输入正确的数字(1-9)!"${END};;esacdone
}set_crb_centos9(){dnf config-manager --set-enabled crb${COLOR}"更新镜像源中,请稍等..."${END}dnf clean all &> /dev/null && dnf makecache &> /dev/null${COLOR}"${OS_ID} ${OS_RELEASE} crb源设置完成!"${END}
}set_yum_centos_stream8(){OLD_MIRROR=$(sed -rn '/^.*baseurl=/s@.*=http.*://(.*)/(.*)/\$stream/.*/$@\1@p' /etc/yum.repos.d/CentOS-*.repo | head -1)OLD_DIR=$(sed -rn '/^.*baseurl=/s@.*=http.*://(.*)/(.*)/\$stream/.*/$@\2@p' /etc/yum.repos.d/CentOS-*.repo | head -1)if [ ${OLD_DIR} == '$contentdir' ];thensed -i.bak -e 's|^mirrorlist=|#mirrorlist=|g' -e 's|^#baseurl=http://mirror.centos.org/$contentdir|baseurl=https://'${MIRROR}'/centos|g' /etc/yum.repos.d/CentOS-*.repoelsesed -i -e 's|^baseurl=https://'${OLD_MIRROR}'|baseurl=https://'${MIRROR}'|g' /etc/yum.repos.d/CentOS-*.repofi${COLOR}"更新镜像源中,请稍等..."${END}dnf clean all &> /dev/null && dnf makecache &> /dev/null${COLOR}"${OS_ID} ${OS_RELEASE} YUM源设置完成!"${END}
}centos_stream8_base_menu(){while true;doecho -e "\E[$[RANDOM%7+31];1m"cat <<-EOF
1)阿里镜像源
2)华为镜像源
3)腾讯镜像源
4)清华镜像源
5)网易镜像源
6)南京大学镜像源
7)中科大镜像源
8)北京大学镜像源
9)西安交通大学镜像源
10)退出
EOFecho -e '\E[0m'read -p "请输入镜像源编号(1-10): " NUMcase ${NUM} in1)aliyunset_yum_centos_stream8;;2)huaweiset_yum_centos_stream8;;3)tencentset_yum_centos_stream8;;4)tunaset_yum_centos_stream8;;5)neteaseset_yum_centos_stream8;;6)njuset_yum_centos_stream8;;7)ustcset_yum_centos_stream8;;8)pkuset_yum_centos_stream8;;9)xjtuset_yum_centos_stream8;;10)break;;*)${COLOR}"输入错误,请输入正确的数字(1-10)!"${END};;esacdone
}set_epel_rocky_centos8_9(){rpm -q epel-release &> /dev/null || { ${COLOR}"安装epel-release工具,请稍等..."${END};yum -y install epel-release &> /dev/null; }MIRROR_URL=`echo ${MIRROR} | awk -F"." '{print $2}'`OLD_MIRROR=$(awk -F'/' '/^baseurl=/{print $3}' /etc/yum.repos.d/epel*.repo | head -1)OLD_DIR=$(awk -F'/' '/^baseurl=/{print $4}' /etc/yum.repos.d/epel*.repo | head -1)if [ ${MIRROR_URL} == "sohu" ];thenif grep -Eqi "^#baseurl" /etc/yum.repos.d/epel*.repo;thensed -i.bak -e 's|^metalink=|#metalink=|g' -e 's|^#baseurl=https://download.example/pub/epel|baseurl=https://'${MIRROR}'/fedora-epel|g' /etc/yum.repos.d/epel*.repoelif [ ${OLD_DIR} == 'epel' ];thensed -i -e 's|^baseurl=https://'${OLD_MIRROR}'/epel|baseurl=https://'${MIRROR}'/fedora-epel|g' /etc/yum.repos.d/epel*.repoelif [ ${OLD_DIR} == 'fedora' ];thensed -i -e 's|^baseurl=https://'${OLD_MIRROR}'/fedora/epel|baseurl=https://'${MIRROR}'/fedora-epel|g' /etc/yum.repos.d/epel*.repoelsesed -i -e 's|^baseurl=https://'${OLD_MIRROR}'/fedora-epel|baseurl=https://'${MIRROR}'/fedora-epel|g' /etc/yum.repos.d/epel*.repofielif [ ${MIRROR_URL} == "sjtu" ];thenif grep -Eqi "^#baseurl" /etc/yum.repos.d/epel*.repo;thensed -i.bak -e 's|^metalink=|#metalink=|g' -e 's|^#baseurl=https://download.example/pub/epel|baseurl=https://'${MIRROR}'/fedora/epel|g' /etc/yum.repos.d/epel*.repoelif [ ${OLD_DIR} == 'epel' ];thensed -i -e 's|^baseurl=https://'${OLD_MIRROR}'/epel|baseurl=https://'${MIRROR}'/fedora/epel|g' /etc/yum.repos.d/epel*.repoelif [ ${OLD_DIR} == 'fedora-epel' ];thensed -i -e 's|^baseurl=https://'${OLD_MIRROR}'/fedora-epel|baseurl=https://'${MIRROR}'/fedora/epel|g' /etc/yum.repos.d/epel*.repoelsesed -i -e 's|^baseurl=https://'${OLD_MIRROR}'/fedora/epel|baseurl=https://'${MIRROR}'/fedora/epel|g' /etc/yum.repos.d/epel*.repofielseif grep -Eqi "^#baseurl" /etc/yum.repos.d/epel*.repo;thensed -i.bak -e 's|^metalink=|#metalink=|g' -e 's|^#baseurl=https://download.example/pub/epel|baseurl=https://'${MIRROR}'/epel|g' /etc/yum.repos.d/epel*.repoelif [ ${OLD_DIR} == 'fedora' ];thensed -i -e 's|^baseurl=https://'${OLD_MIRROR}'/fedora/epel|baseurl=https://'${MIRROR}'/epel|g' /etc/yum.repos.d/epel*.repoelif [ ${OLD_DIR} == 'fedora-epel' ];thensed -i -e 's|^baseurl=https://'${OLD_MIRROR}'/fedora-epel|baseurl=https://'${MIRROR}'/epel|g' /etc/yum.repos.d/epel*.repoelsesed -i -e 's|^baseurl=https://'${OLD_MIRROR}'/epel|baseurl=https://'${MIRROR}'/epel|g' /etc/yum.repos.d/epel*.repofifiif [ ${OS_RELEASE_VERSION} == "9" ];thendnf config-manager --set-disabled epel-cisco-openh264fi${COLOR}"更新镜像源中,请稍等..."${END}dnf clean all &> /dev/null && dnf makecache &> /dev/null${COLOR}"${OS_ID} ${OS_RELEASE} EPEL源设置完成!"${END}
}rocky_centos8_9_epel_menu(){while true;doecho -e "\E[$[RANDOM%7+31];1m"cat <<-EOF
1)阿里镜像源
2)华为镜像源
3)腾讯镜像源
4)清华镜像源
5)搜狐镜像源
6)南京大学镜像源
7)中科大镜像源
8)上海交通大学镜像源
9)北京大学镜像源
10)西安交通大学镜像源
11)退出
EOFecho -e '\E[0m'read -p "请输入镜像源编号(1-11): " NUMcase ${NUM} in1)aliyunset_epel_rocky_centos8_9;;2)huaweiset_epel_rocky_centos8_9;;3)tencentset_epel_rocky_centos8_9;;4)tunaset_epel_rocky_centos8_9;;5)sohuset_epel_rocky_centos8_9;;6)njuset_epel_rocky_centos8_9;;7)ustcset_epel_rocky_centos8_9;;8)sjtuset_epel_rocky_centos8_9;;9)pkuset_epel_rocky_centos8_9;;10)xjtuset_epel_rocky_centos8_9;;11)break;;*)${COLOR}"输入错误,请输入正确的数字(1-11)!"${END};;esacdone
}set_yum_centos7(){OLD_MIRROR=$(sed -rn '/^.*baseurl=/s@.*=(http.*)://(.*)/(.*)/\$releasever/.*/$@\2@p' /etc/yum.repos.d/CentOS-*.repo | head -1)if grep -Eqi "^#baseurl" /etc/yum.repos.d/CentOS-*.repo;thensed -i.bak -e 's|^mirrorlist=|#mirrorlist=|g' -e 's|^#baseurl=http://mirror.centos.org|baseurl=https://'${MIRROR}'|g' /etc/yum.repos.d/CentOS-*.repoelsesed -i -e 's|^baseurl=https://'${OLD_MIRROR}'|baseurl=https://'${MIRROR}'|g' /etc/yum.repos.d/CentOS-*.repofi${COLOR}"更新镜像源中,请稍等..."${END}yum clean all &> /dev/null && yum makecache &> /dev/null${COLOR}"${OS_ID} ${OS_RELEASE} YUM源设置完成!"${END}
}centos7_base_menu(){while true;doecho -e "\E[$[RANDOM%7+31];1m"cat <<-EOF
1)阿里镜像源
2)华为镜像源
3)腾讯镜像源
4)清华镜像源
5)网易镜像源
6)南京大学镜像源
7)中科大镜像源
8)北京大学镜像源
9)西安交通大学镜像源
10)退出
EOFecho -e '\E[0m'read -p "请输入镜像源编号(1-10): " NUMcase ${NUM} in1)aliyunset_yum_centos7;;2)huaweiset_yum_centos7;;3)tencentset_yum_centos7;;4)tunaset_yum_centos7;;5)neteaseset_yum_centos7;;6)njuset_yum_centos7;;7)ustcset_yum_centos7;;8)pkuset_yum_centos7;;9)xjtuset_yum_centos7;;10)break;;*)${COLOR}"输入错误,请输入正确的数字(1-10)!"${END};;esacdone
}set_epel_centos7(){rpm -q epel-release &> /dev/null || { ${COLOR}"安装epel-release工具,请稍等..."${END};yum -y install epel-release &> /dev/null; }MIRROR_URL=`echo ${MIRROR} | awk -F"." '{print $2}'`OLD_MIRROR=$(awk -F'/' '/^baseurl=/{print $3}' /etc/yum.repos.d/epel*.repo | head -1)OLD_DIR=$(awk -F'/' '/^baseurl=/{print $4}' /etc/yum.repos.d/epel*.repo | head -1)if [ ${MIRROR_URL} == "sohu" ];thenif grep -Eqi "^#baseurl" /etc/yum.repos.d/epel*.repo;thensed -i.bak -e 's!^metalink=!#metalink=!g' -e 's!^#baseurl=!baseurl=!g' -e 's!https\?://download\.fedoraproject\.org/pub/epel!https://'${MIRROR}'/fedora-epel!g' -e 's!https\?://download\.example/pub/epel!https://'${MIRROR}'/fedora-epel!g' /etc/yum.repos.d/epel*.repoelif [ ${OLD_DIR} == 'epel' ];thensed -i -e 's|^baseurl=https://'${OLD_MIRROR}'/epel|baseurl=https://'${MIRROR}'/fedora-epel|g' /etc/yum.repos.d/epel*.repoelif [ ${OLD_DIR} == 'fedora' ];thensed -i -e 's|^baseurl=https://'${OLD_MIRROR}'/fedora/epel|baseurl=https://'${MIRROR}'/fedora-epel|g' /etc/yum.repos.d/epel*.repoelsesed -i -e 's|^baseurl=https://'${OLD_MIRROR}'/fedora-epel|baseurl=https://'${MIRROR}'/fedora-epel|g' /etc/yum.repos.d/epel*.repofielif [ ${MIRROR_URL} == "sjtu" ];thenif grep -Eqi "^#baseurl" /etc/yum.repos.d/epel*.repo;thensed -i.bak -e 's!^metalink=!#metalink=!g' -e 's!^#baseurl=!baseurl=!g' -e 's!https\?://download\.fedoraproject\.org/pub/epel!https://'${MIRROR}'/fedora/epel!g' -e 's!https\?://download\.example/pub/epel!https://'${MIRROR}'/fedora/epel!g' /etc/yum.repos.d/epel*.repoelif [ ${OLD_DIR} == 'epel' ];thensed -i -e 's|^baseurl=https://'${OLD_MIRROR}'/epel|baseurl=https://'${MIRROR}'/fedora/epel|g' /etc/yum.repos.d/epel*.repoelif [ ${OLD_DIR} == 'fedora-epel' ];thensed -i -e 's|^baseurl=https://'${OLD_MIRROR}'/fedora-epel|baseurl=https://'${MIRROR}'/fedora/epel|g' /etc/yum.repos.d/epel*.repoelsesed -i -e 's|^baseurl=https://'${OLD_MIRROR}'/fedora/epel|baseurl=https://'${MIRROR}'/fedora/epel|g' /etc/yum.repos.d/epel*.repofielseif grep -Eqi "^#baseurl" /etc/yum.repos.d/epel*.repo;thensed -i.bak -e 's!^metalink=!#metalink=!g' -e 's!^#baseurl=!baseurl=!g' -e 's!https\?://download\.fedoraproject\.org/pub/epel!https://'${MIRROR}'/epel!g' -e 's!https\?://download\.example/pub/epel!https://'${MIRROR}'/epel!g' /etc/yum.repos.d/epel*.repoelif [ ${OLD_DIR} == 'fedora' ];thensed -i -e 's|^baseurl=https://'${OLD_MIRROR}'/fedora/epel|baseurl=https://'${MIRROR}'/epel|g' /etc/yum.repos.d/epel*.repoelif [ ${OLD_DIR} == 'fedora-epel' ];thensed -i -e 's|^baseurl=https://'${OLD_MIRROR}'/fedora-epel|baseurl=https://'${MIRROR}'/epel|g' /etc/yum.repos.d/epel*.repoelsesed -i -e 's|^baseurl=https://'${OLD_MIRROR}'/epel|baseurl=https://'${MIRROR}'/epel|g' /etc/yum.repos.d/epel*.repofifi${COLOR}"更新镜像源中,请稍等..."${END}dnf clean all &> /dev/null && dnf makecache &> /dev/null${COLOR}"${OS_ID} ${OS_RELEASE} EPEL源设置完成!"${END}
}centos7_epel_menu(){while true;doecho -e "\E[$[RANDOM%7+31];1m"cat <<-EOF
1)阿里镜像源
2)华为镜像源
3)腾讯镜像源
4)清华镜像源
5)搜狐镜像源
6)南京大学镜像源
7)中科大镜像源
8)上海交通大学镜像源
9)北京大学镜像源
10)西安交通大学镜像源
11)退出
EOFecho -e '\E[0m'read -p "请输入镜像源编号(1-11): " NUMcase ${NUM} in1)aliyunset_epel_centos7;;2)huaweiset_epel_centos7;;3)tencentset_epel_centos7;;4)tunaset_epel_centos7;;5)sohuset_epel_centos7;;6)njuset_epel_centos7;;7)ustcset_epel_centos7;;8)sjtuset_epel_centos7;;9)pkuset_epel_centos7;;10)xjtuset_epel_centos7;;11)break;;*)${COLOR}"输入错误,请输入正确的数字(1-11)!"${END};;esacdone
}rocky_menu(){while true;doecho -e "\E[$[RANDOM%7+31];1m"cat <<-EOF
1)base仓库
2)epel仓库
3)启用Rocky 9 devel仓库
4)启用Rocky 8 PowerTools仓库
5)退出
EOFecho -e '\E[0m'read -p "请输入镜像源编号(1-5): " NUMcase ${NUM} in1)rocky8_9_base_menu;;2)rocky_centos8_9_epel_menu;;3)if [ ${OS_RELEASE_VERSION} == "9" ];thenset_devel_rocky9fi;;4)if [ ${OS_RELEASE_VERSION} == "8" ];thenset_powertools_rocky_centos8fi;;5)break;;*)${COLOR}"输入错误,请输入正确的数字(1-5)!"${END};;esacdone
}centos_menu(){while true;doecho -e "\E[$[RANDOM%7+31];1m"cat <<-EOF
1)base仓库
2)epel仓库
3)启用CentOS Stream 9 crb仓库
4)启用CentOS Stream 8 PowerTools仓库
5)退出
EOFecho -e '\E[0m'read -p "请输入镜像源编号(1-5): " NUMcase ${NUM} in1)if [ ${OS_NAME} == "Stream" ];thenif [ ${OS_RELEASE_VERSION} == "8" ];thencentos_stream8_base_menuelseif grep -Eqi "^baseurl" /etc/yum.repos.d/centos*.repo;thencentos_stream9_base_menuelseset_yum_centos_stream9_perlfifielsecentos7_base_menufi;;2)if [ ${OS_RELEASE_VERSION} == "7" ];thencentos7_epel_menuelserocky_centos8_9_epel_menufi;;3)if [ ${OS_RELEASE_VERSION} == "9" ];thenset_crb_centos9fi;;4)if [ ${OS_RELEASE_VERSION} == "8" ];thenset_powertools_rocky_centos8fi;;5)break;;*)${COLOR}"输入错误,请输入正确的数字(1-5)!"${END};;esacdone
}set_apt(){OLD_MIRROR=`sed -rn "s@^deb http(.*)://(.*)/ubuntu/? $(lsb_release -cs) main.*@\2@p" /etc/apt/sources.list`sed -i.bak 's/'${OLD_MIRROR}'/'${MIRROR}'/g' /etc/apt/sources.listif [ ${OS_RELEASE_VERSION} == "18" ];thenSECURITY_MIRROR=`sed -rn "s@^deb http(.*)://(.*)/ubuntu $(lsb_release -cs)-security main.*@\2@p" /etc/apt/sources.list`sed -i.bak 's/'${SECURITY_MIRROR}'/'${MIRROR}'/g' /etc/apt/sources.listfi${COLOR}"更新镜像源中,请稍等..."${END}apt update &> /dev/null${COLOR}"${OS_ID} ${OS_RELEASE} APT源设置完成!"${END}
}apt_menu(){while true;doecho -e "\E[$[RANDOM%7+31];1m"cat <<-EOF
1)阿里镜像源
2)华为镜像源
3)腾讯镜像源
4)清华镜像源
5)网易镜像源
6)南京大学镜像源
7)中科大镜像源
8)上海交通大学镜像源
9)北京大学镜像源
10)西安交通大学镜像源
11)退出
EOFecho -e '\E[0m'read -p "请输入镜像源编号(1-11): " NUMcase ${NUM} in1)aliyunset_apt;;2)huaweiset_apt;;3)tencentset_apt;;4)tunaset_apt;;5)neteaseset_apt;;6)njuset_apt;;7)ustcset_apt;;8)sjtuset_apt;;9)pkuset_apt;;10)xjtuset_apt;;11)break;;*)${COLOR}"输入错误,请输入正确的数字(1-11)!"${END};;esacdone
}set_mirror_repository(){if [ ${OS_ID} == "CentOS" ];thencentos_menuelif [ ${OS_ID} == "Rocky" ];thenrocky_menuelseapt_menufi
}rocky_centos_minimal_install(){${COLOR}'开始安装“Minimal安装建议安装软件包”,请稍等......'${END}yum -y install gcc make autoconf gcc-c++ glibc glibc-devel pcre pcre-devel openssl openssl-devel systemd-devel zlib-devel vim lrzsz tree tmux lsof tcpdump wget net-tools iotop bc bzip2 zip unzip nfs-utils man-pages &> /dev/null${COLOR}"${OS_ID} ${OS_RELEASE} Minimal安装建议安装软件包已安装完成!"${END}
}ubuntu_minimal_install(){${COLOR}'开始安装“Minimal安装建议安装软件包”,请稍等......'${END}apt -y install iproute2 ntpdate tcpdump telnet traceroute nfs-kernel-server nfs-common lrzsz tree openssl libssl-dev libpcre3 libpcre3-dev zlib1g-dev gcc openssh-server iotop unzip zip${COLOR}"${OS_ID} ${OS_RELEASE} Minimal安装建议安装软件包已安装完成!"${END}
}minimal_install(){if [ ${OS_ID} == "CentOS" -o ${OS_ID} == "Rocky" ] &> /dev/null;thenrocky_centos_minimal_installelseubuntu_minimal_installfi
}disable_firewall(){if [ ${OS_ID} == "CentOS" -o ${OS_ID} == "Rocky" ];thenrpm -q firewalld &> /dev/null && { systemctl disable --now firewalld &> /dev/null; ${COLOR}"${OS_ID} ${OS_RELEASE} Firewall防火墙已关闭!"${END}; } || ${COLOR}"${OS_ID} ${OS_RELEASE} iptables防火墙已关闭!"${END}elsedpkg -s ufw &> /dev/null && { systemctl disable --now ufw &> /dev/null; ${COLOR}"${OS_ID} ${OS_RELEASE} ufw防火墙已关闭!"${END}; } || ${COLOR}"${OS_ID} ${OS_RELEASE}  没有ufw防火墙服务,不用关闭!"${END}fi
}disable_selinux(){if [ ${OS_ID} == "CentOS" -o ${OS_ID} == "Rocky" ];thenif [ `getenforce` == "Enforcing" ];thensed -ri.bak 's/^(SELINUX=).*/\1disabled/' /etc/selinux/config${COLOR}"${OS_ID} ${OS_RELEASE} SELinux已禁用,请重新启动系统后才能生效!"${END}else${COLOR}"${OS_ID} ${OS_RELEASE} SELinux已被禁用,不用设置!"${END}fielse${COLOR}"${OS_ID} ${OS_RELEASE} SELinux默认没有安装,不用设置!"${END}fi
}set_swap(){sed -ri 's/.*swap.*/#&/' /etc/fstabif [ ${OS_ID} == "Ubuntu" ];thenif [ ${OS_RELEASE_VERSION} == 20 -o ${OS_RELEASE_VERSION} == 22 ];thenSD_NAME=`lsblk|awk -F"[ └─]" '/SWAP/{printf $3}'`systemctl mask dev-${SD_NAME}.swap &> /dev/nullfifiswapoff -a${COLOR}"${OS_ID} ${OS_RELEASE} 禁用swap成功!"${END}
}set_localtime(){ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtimeecho 'Asia/Shanghai' >/etc/timezoneif [ ${OS_ID} == "Ubuntu" ];thencat >> /etc/default/locale <<-EOF
LC_TIME=en_DK.UTF-8
EOFfi${COLOR}"${OS_ID} ${OS_RELEASE} 系统时区已设置成功,请重启系统后生效!"${END}
}set_limits(){cat >> /etc/security/limits.conf <<-EOF
root     soft   core     unlimited
root     hard   core     unlimited
root     soft   nproc    1000000
root     hard   nproc    1000000
root     soft   nofile   1000000
root     hard   nofile   1000000
root     soft   memlock  32000
root     hard   memlock  32000
root     soft   msgqueue 8192000
root     hard   msgqueue 8192000
EOF${COLOR}"${OS_ID} ${OS_RELEASE} 优化资源限制参数成功!"${END}
}set_kernel(){modprobe  br_netfiltercat > /etc/sysctl.conf <<-EOF
# Controls source route verification
net.ipv4.conf.default.rp_filter = 1
net.ipv4.ip_nonlocal_bind = 1
net.ipv4.ip_forward = 1# Do not accept source routing
net.ipv4.conf.default.accept_source_route = 0# Controls the System Request debugging functionality of the kernel
kernel.sysrq = 0# Controls whether core dumps will append the PID to the core filename.
# Useful for debugging multi-threaded applications.
kernel.core_uses_pid = 1# Controls the use of TCP syncookies
net.ipv4.tcp_syncookies = 1# Disable netfilter on bridges.
net.bridge.bridge-nf-call-ip6tables = 0
net.bridge.bridge-nf-call-iptables = 0
net.bridge.bridge-nf-call-arptables = 0# Controls the default maxmimum size of a mesage queue
kernel.msgmnb = 65536# Controls the maximum size of a message, in bytes
kernel.msgmax = 65536# Controls the maximum shared segment size, in bytes
kernel.shmmax = 68719476736# Controls the maximum number of shared memory segments, in pages
kernel.shmall = 4294967296# TCP kernel paramater
net.ipv4.tcp_mem = 786432 1048576 1572864
net.ipv4.tcp_rmem = 4096        87380   4194304
net.ipv4.tcp_wmem = 4096        16384   4194304
net.ipv4.tcp_window_scaling = 1
net.ipv4.tcp_sack = 1# socket buffer
net.core.wmem_default = 8388608
net.core.rmem_default = 8388608
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
net.core.netdev_max_backlog = 262144
net.core.somaxconn = 20480
net.core.optmem_max = 81920# TCP conn
net.ipv4.tcp_max_syn_backlog = 262144
net.ipv4.tcp_syn_retries = 3
net.ipv4.tcp_retries1 = 3
net.ipv4.tcp_retries2 = 15# tcp conn reuse
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_fin_timeout = 30
net.ipv4.tcp_timestamps = 0net.ipv4.tcp_max_tw_buckets = 20000
net.ipv4.tcp_max_orphans = 3276800
net.ipv4.tcp_synack_retries = 1
net.ipv4.tcp_syncookies = 1# keepalive conn
net.ipv4.tcp_keepalive_time = 300
net.ipv4.tcp_keepalive_intvl = 30
net.ipv4.tcp_keepalive_probes = 3
net.ipv4.ip_local_port_range = 10001    65000# swap
vm.overcommit_memory = 0
vm.swappiness = 10#net.ipv4.conf.eth1.rp_filter = 0
#net.ipv4.conf.lo.arp_ignore = 1
#net.ipv4.conf.lo.arp_announce = 2
#net.ipv4.conf.all.arp_ignore = 1
#net.ipv4.conf.all.arp_announce = 2
EOFMAIN_KERNEL=`uname -r | cut -d. -f1`SUB_KERNEL=`uname -r | cut -d. -f2`if [ ${MAIN_KERNEL} -lt "4" -a ${SUB_KERNEL} -lt "12" ];thencat >> /etc/sysctl.conf <<-EOF	
net.ipv4.tcp_tw_recycle = 0
EOFfisysctl -p &> /dev/null${COLOR}"${OS_ID} ${OS_RELEASE} 优化内核参数成功!"${END}
}optimization_sshd(){if [ ${OS_ID} == "CentOS" -o ${OS_ID} == "Rocky" ];thensed -ri.bak -e 's/^#(UseDNS).*/\1 no/' -e 's/^(GSSAPIAuthentication).*/\1 no/' /etc/ssh/sshd_configelsesed -ri.bak -e 's/^#(UseDNS).*/\1 no/' -e 's/^#(GSSAPIAuthentication).*/\1 no/' /etc/ssh/sshd_configfisystemctl restart sshd${COLOR}"${OS_ID} ${OS_RELEASE} SSH已优化完成!"${END}
}set_sshd_port(){disable_selinuxdisable_firewallread -p "请输入端口号: " PORTsed -i 's/#Port 22/Port '${PORT}'/' /etc/ssh/sshd_config${COLOR}"${OS_ID} ${OS_RELEASE} 更改SSH端口号已完成,请重启系统后生效!"${END}
}set_centos_alias(){ETHNAME=`ip addr | awk -F"[ :]" '/^2/{print $3}'`ETHNAME2=`ip addr | awk -F"[ :]" '/^3/{print $3}'`read -p "请输入网卡数量(仅支持1个和2个网卡,输入1或2): " IP_NUMif [ ${IP_NUM} == "1" ];thenif [ ${OS_RELEASE_VERSION} == "7" -o ${OS_RELEASE_VERSION} == "8" ];thencat >>~/.bashrc <<-EOF
alias cdnet="cd /etc/sysconfig/network-scripts"
alias cdrepo="cd /etc/yum.repos.d"
alias vie0="vim /etc/sysconfig/network-scripts/ifcfg-${ETHNAME}"
EOFelsecat >>~/.bashrc <<-EOF
alias cdnet="cd /etc/NetworkManager/system-connections"
alias cdrepo="cd /etc/yum.repos.d"
alias vie0="vim /etc/NetworkManager/system-connections/${ETHNAME}.nmconnection"
EOFfielse	if [ ${OS_RELEASE_VERSION} == "7" -o ${OS_RELEASE_VERSION} == "8" ];thencat >>~/.bashrc <<-EOF
alias cdnet="cd /etc/sysconfig/network-scripts"
alias cdrepo="cd /etc/yum.repos.d"
alias vie0="vim /etc/sysconfig/network-scripts/ifcfg-${ETHNAME}"
alias vie1="vim /etc/sysconfig/network-scripts/ifcfg-${ETHNAME2}"
EOFelsecat >>~/.bashrc <<-EOF
alias cdnet="cd /etc/NetworkManager/system-connections"
alias cdrepo="cd /etc/yum.repos.d"
alias vie0="vim /etc/NetworkManager/system-connections/${ETHNAME}.nmconnection"
alias vie1="vim /etc/NetworkManager/system-connections/${ETHNAME2}.nmconnection"
EOFfifiDISK_NAME=`lsblk|awk -F" " '/disk/{printf $1}' | cut -c1-4`if [ ${DISK_NAME} == "sda" ];thencat >>~/.bashrc <<-EOF
alias scandisk="echo '- - -' > /sys/class/scsi_host/host0/scan;echo '- - -' > /sys/class/scsi_host/host1/scan;echo '- - -' > /sys/class/scsi_host/host2/scan"
EOFfi${COLOR}"${OS_ID} ${OS_RELEASE} 系统别名已设置成功,请重新登陆后生效!"${END}
}set_ubuntu_alias(){cat >>~/.bashrc <<-EOF
alias cdnet="cd /etc/netplan"
alias cdapt="cd /etc/apt"
EOF${COLOR}"${OS_ID} ${OS_RELEASE} 系统别名已设置成功,请重新登陆后生效!"${END}
}set_alias(){if [ ${OS_ID} == "CentOS" -o ${OS_ID} == "Rocky" ];thenif grep -Eqi "(.*cdnet|.*vie0|.*vie1|.*scandisk)" ~/.bashrc;thensed -i -e '/.*cdnet/d'  -e '/.*vie0/d' -e '/.*vie1/d' -e '/.*scandisk/d' ~/.bashrcset_centos_aliaselseset_centos_aliasfifiif [ ${OS_ID} == "Ubuntu" ];thenif grep -Eqi "(.*cdnet|.*scandisk)" ~/.bashrc;thensed -i -e '/.*cdnet/d' -e '/.*scandisk/d' ~/.bashrcset_ubuntu_aliaselseset_ubuntu_aliasfifi
}set_vimrc(){read -p "请输入作者名: " AUTHORread -p "请输入QQ号: " QQread -p "请输入网址: " V_MIRRORcat >~/.vimrc <<-EOF
set ts=4
set expandtab
set ignorecase
set cursorline
set autoindent
autocmd BufNewFile *.sh exec ":call SetTitle()"
func SetTitle()if expand("%:e") == 'sh'call setline(1,"#!/bin/bash")call setline(2,"#")call setline(3,"#**********************************************************************************************")call setline(4,"#Author:        ${AUTHOR}")call setline(5,"#QQ:            ${QQ}")call setline(6,"#Date:          ".strftime("%Y-%m-%d"))call setline(7,"#FileName:      ".expand("%"))call setline(8,"#MIRROR:           ${V_MIRROR}")call setline(9,"#Description:   The test script")call setline(10,"#Copyright (C): ".strftime("%Y")." All rights reserved")call setline(11,"#*********************************************************************************************")call setline(12,"")endif
endfunc
autocmd BufNewFile * normal G
EOF${COLOR}"${OS_ID} ${OS_RELEASE} vimrc设置完成,请重新系统启动才能生效!"${END}
}set_mail(){                                                                                                 if [ ${OS_ID} == "CentOS" -o ${OS_ID} == "Rocky" ];thenrpm -q postfix &> /dev/null || { yum -y install postfix &> /dev/null; systemctl enable --now postfix &> /dev/null; }rpm -q mailx &> /dev/null || yum -y install mailx &> /dev/nullelsedpkg -s mailutils &> /dev/null || apt -y install mailutilsfiread -p "请输入邮箱地址: " MAILread -p "请输入邮箱授权码: " AUTHSMTP=`echo ${MAIL} |awk -F"@" '{print $2}'`cat >~/.mailrc <<-EOF
set from=${MAIL}
set smtp=smtp.${SMTP}
set smtp-auth-user=${MAIL}
set smtp-auth-password=${AUTH}
set smtp-auth=login
set ssl-verify=ignore
EOF${COLOR}"${OS_ID} ${OS_RELEASE} 邮件设置完成,请重新登录后才能生效!"${END}
}red(){P_COLOR=31
}green(){P_COLOR=32
}yellow(){P_COLOR=33
}blue(){P_COLOR=34
}violet(){P_COLOR=35
}cyan_blue(){P_COLOR=36
}random_color(){P_COLOR="$[RANDOM%7+31]"
}rocky_centos_ps1(){C_PS1=$(echo "PS1='\[\e[1;${P_COLOR}m\][\u@\h \W]\\$ \[\e[0m\]'" >> ~/.bashrc)
}ubuntu_ps1(){U_PS1=$(echo 'PS1="\[\e[1;'''${P_COLOR}'''m\]${debian_chroot:+($debian_chroot)}\u@\h:\w\\$ \[\e[0m\]"' >> ~/.bashrc)
}set_ps1_env(){if [ ${OS_ID} == "CentOS" -o ${OS_ID} == "Rocky" ];thenif grep -Eqi "^PS1" ~/.bashrc;thensed -i '/^PS1/d' ~/.bashrcrocky_centos_ps1elserocky_centos_ps1fifiif [ ${OS_ID} == "Ubuntu" ];thenif grep -Eqi "^PS1" ~/.bashrc;thensed -i '/^PS1/d' ~/.bashrcubuntu_ps1elseubuntu_ps1fifi
}set_ps1(){TIPS="${COLOR}${OS_ID} ${OS_RELEASE} PS1设置成功,请重新登录生效!${END}"while true;doecho -e "\E[$[RANDOM%7+31];1m"cat <<-EOF
1)31 红色
2)32 绿色
3)33 黄色
4)34 蓝色
5)35 紫色
6)36 青色
7)随机颜色
8)退出
EOFecho -e '\E[0m'read -p "请输入颜色编号(1-8): " NUMcase ${NUM} in1)redset_ps1_env${TIPS};;2)greenset_ps1_env${TIPS};;3)yellowset_ps1_env${TIPS};;4)blueset_ps1_env${TIPS};;5)violetset_ps1_env${TIPS};;6)cyan_blueset_ps1_env${TIPS};;7)random_colorset_ps1_env${TIPS};;8)break;;*)${COLOR}"输入错误,请输入正确的数字(1-8)!"${END};;esacdone
}set_vim(){echo "export EDITOR=vim" >> ~/.bashrc
}set_vim_env(){if grep -Eqi ".*EDITOR" ~/.bashrc;thensed -i '/.*EDITOR/d' ~/.bashrcset_vimelseset_vimfi${COLOR}"${OS_ID} ${OS_RELEASE} 默认文本编辑器设置成功,请重新登录生效!"${END}
}set_history(){echo 'export HISTTIMEFORMAT="%F %T "' >> ~/.bashrc 
}set_history_env(){if grep -Eqi ".*HISTTIMEFORMAT" ~/.bashrc;thensed -i '/.*HISTTIMEFORMAT/d' ~/.bashrcset_historyelseset_historyfi${COLOR}"${OS_ID} ${OS_RELEASE} history格式设置成功,请重新登录生效!"${END}
}disable_restart(){if [ -f /usr/lib/systemd/system/ctrl-alt-del.target ];thencp /usr/lib/systemd/system/ctrl-alt-del.target{,.bak}rm -f /usr/lib/systemd/system/ctrl-alt-del.target${COLOR}"${OS_ID} ${OS_RELEASE} 禁用ctrl+alt+del重启处理成功!"${END}else${COLOR}"${OS_ID} ${OS_RELEASE} 禁用ctrl+alt+del已处理!"${END}fi
}set_root_login(){read -p "请输入密码: " PASSWORDecho ${PASSWORD} |sudo -S sed -ri 's@#(PermitRootLogin )prohibit-password@\1yes@' /etc/ssh/sshd_configsudo systemctl restart sshdsudo -S passwd root <<-EOF
${PASSWORD}
${PASSWORD}
EOF${COLOR}"${OS_ID} ${OS_RELEASE} root用户登录已设置完成,请重新登录后生效!"${END}
}ubuntu_remove(){apt purge ufw lxd lxd-client lxcfs liblxc-common${COLOR}"${OS_ID} ${OS_RELEASE} 无用软件包卸载完成!"${END}
}menu(){while true;doecho -e "\E[$[RANDOM%7+31];1m"cat <<-EOF
********************************************************************
*                          初始化脚本菜单                          *
* 1.修改网卡名                     14.更改SSH端口号                *
* 2.修改IP地址和网关地址(单网卡)   15.设置系统别名                 *
* 3.修改IP地址和网关地址(双网卡)   16.设置vimrc配置文件            *
* 4.设置主机名                     17.安装邮件服务并配置邮件       *
* 5.设置镜像仓库                   18.设置PS1(请进入选择颜色)      *
* 6.Minimal安装建议安装软件        19.设置默认文本编辑器为vim      *
* 7.关闭防火墙                     20.设置history格式              *
* 8.禁用SELinux                    21.禁用ctrl+alt+del重启         *
* 9.禁用SWAP                       22.Ubuntu设置root用户登录       *
* 10.设置系统时区                  23.Ubuntu卸载无用软件包         *
* 11.优化资源限制参数              24.重启系统                     *
* 12.优化内核参数                  25.关机                         *
* 13.优化SSH                       26.退出                         *
********************************************************************
EOFecho -e '\E[0m'read -p "请选择相应的编号(1-26): " choicecase ${choice} in1)set_eth;;2)set_ip;;3)set_dual_ip;;4)set_hostname;;5)set_mirror_repository;;6)minimal_install;;7)disable_firewall;;8)disable_selinux;;9)set_swap;;10)set_localtime;;11)set_limits;;12)set_kernel;;13)optimization_sshd;;14)set_sshd_port;;15)set_alias;;16)set_vimrc;;17)set_mail;;18)set_ps1;;19)set_vim_env;;20)set_history_env;;21)disable_restart;;22)set_root_login;;23)ubuntu_remove;;24)reboot;;25)shutdown -h now;;26)break;;*)${COLOR}"输入错误,请输入正确的数字(1-26)!"${END};;esacdone
}main(){osmenu
}main

CentOS Stream 9修改镜像仓库需要下面的perl脚本。

[root@rocky9 ~]# cat update_mirror.pl
#!/usr/bin/perluse strict;
use warnings;
use autodie;# 要修改镜像源,请去修改url变量!
my $url = 'mirrors.aliyun.com';
my $mirrors = "https://$url/centos-stream";if (@ARGV < 1) {die "Usage: $0 <filename1> <filename2> ...\n";
}while (my $filename = shift @ARGV) {my $backup_filename = $filename . '.bak';rename $filename, $backup_filename;open my $input, "<", $backup_filename;open my $output, ">", $filename;while (<$input>) {s/^metalink/# metalink/;if (m/^name/) {my (undef, $repo, $arch) = split /-/;$repo =~ s/^\s+|\s+$//g;($arch = defined $arch ? lc($arch) : '') =~ s/^\s+|\s+$//g;if ($repo =~ /^Extras/) {$_ .= "baseurl=${mirrors}/SIGs/\$releasever-stream/extras" . ($arch eq 'source' ? "/${arch}/" : "/\$basearch/") . "extras-common\n";} else {$_ .= "baseurl=${mirrors}/\$releasever-stream/$repo" . ($arch eq 'source' ? "/" : "/\$basearch/") . ($arch ne '' ? "${arch}/tree/" : "os") . "\n";}}print $output $_;}
}

下面是reset_v7_2脚本内容:

[root@rocky9 ~]# cat reset_v7_2.sh
#!/bin/bash
#
#***************************************************************************************************
#Author:        Raymond
#QQ:            88563128
#Date:          2024-02-25
#FileName:      reset_v7_2.sh
#MIRROR:        raymond.blog.csdn.net
#Description:   reset for CentOS 7 & CentOS Stream 8/9 & Ubuntu 18.04/20.04/22.04 & Rocky 8/9
#Copyright (C): 2024 All rights reserved
#***************************************************************************************************
COLOR="echo -e \\033[01;31m"
END='\033[0m'os(){OS_ID=`sed -rn '/^NAME=/s@.*="([[:alpha:]]+).*"$@\1@p' /etc/os-release`OS_NAME=`sed -rn '/^NAME=/s@.*="([[:alpha:]]+) (.*)"$@\2@p' /etc/os-release`OS_RELEASE=`sed -rn '/^VERSION_ID=/s@.*="?([0-9.]+)"?@\1@p' /etc/os-release`OS_RELEASE_VERSION=`sed -rn '/^VERSION_ID=/s@.*="?([0-9]+)\.?.*"?@\1@p' /etc/os-release`
}set_rocky_centos_eth(){if [ ${OS_RELEASE_VERSION} == "7" -o ${OS_RELEASE_VERSION} == "8" ];thenETHNAME=`ip addr | awk -F"[ :]" '/^2/{print $3}'`if grep -Eqi "(net\.ifnames|biosdevname)" /etc/default/grub;then${COLOR}"${OS_ID} ${OS_RELEASE} 网卡名配置文件已修改,不用修改!"${END}else# 修改网卡名称配置文件sed -ri.bak '/^GRUB_CMDLINE_LINUX=/s@"$@ net.ifnames=0 biosdevname=0"@' /etc/default/grubgrub2-mkconfig -o /boot/grub2/grub.cfg >& /dev/null# 修改网卡文件名mv /etc/sysconfig/network-scripts/ifcfg-${ETHNAME} /etc/sysconfig/network-scripts/ifcfg-eth0${COLOR}"${OS_ID} ${OS_RELEASE} 网卡名已修改成功,10秒后,机器会自动重启!"${END}sleep 10 && shutdown -r nowfi   else${COLOR}"${OS_ID} ${OS_RELEASE} 不能修改网卡名!"${END} fi
}set_ubuntu_eth(){#修改网卡名称配置文件if grep -Eqi "(net\.ifnames|biosdevname)" /etc/default/grub;then${COLOR}"${OS_ID} ${OS_RELEASE} 网卡名配置文件已修改,不用修改!"${END}elsesed -ri.bak '/^GRUB_CMDLINE_LINUX=/s@"$@net.ifnames=0 biosdevname=0"@' /etc/default/grubgrub-mkconfig -o /boot/grub/grub.cfg >& /dev/null${COLOR}"${OS_ID} ${OS_RELEASE} 网卡名已修改成功,请重新启动系统后才能生效!"${END}fi
}set_eth(){if [ ${OS_ID} == "CentOS" -o ${OS_ID} == "Rocky" ];thenset_rocky_centos_ethelseset_ubuntu_ethfi
}check_ip(){local IP=$1VALID_CHECK=$(echo ${IP}|awk -F. '$1<=255&&$2<=255&&$3<=255&&$4<=255{print "yes"}')if echo ${IP}|grep -E "^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$" >/dev/null; thenif [ ${VALID_CHECK} == "yes" ]; thenecho "IP ${IP}  available!"return 0elseecho "IP ${IP} not available!"return 1fielseecho "IP format error!"return 1fi
}set_rocky_centos_ip(){ETHNAME=`ip addr | awk -F"[ :]" '/^2/{print $3}'`CONNECTION_NAME=`nmcli dev | awk 'NR==2{print $4,$5,$6}'`	while true; doread -p "请输入IP地址: " IPcheck_ip ${IP}[ $? -eq 0 ] && breakdoneread -p "请输入子网掩码位数: " C_PREFIXwhile true; doread -p "请输入网关地址: " GATEWAYcheck_ip ${GATEWAY}[ $? -eq 0 ] && breakdoneif [ ${OS_RELEASE_VERSION} == "7" -o ${OS_RELEASE_VERSION} == "8" ];thennmcli connection modify "${CONNECTION_NAME}" con-name ${ETHNAME}cat > /etc/sysconfig/network-scripts/ifcfg-eth0 <<-EOF
NAME=${ETHNAME}
DEVICE=${ETHNAME}
ONBOOT=yes
BOOTPROTO=none
TYPE=Ethernet
IPADDR=${IP}
PREFIX=${C_PREFIX}
GATEWAY=${GATEWAY}
DNS1=223.5.5.5
DNS2=180.76.76.76
EOF${COLOR}"${OS_ID} ${OS_RELEASE} IP地址、网关地址和DNS已修改成功,10秒后,机器会自动重启!"${END}sleep 10 && shutdown -r nowelse${COLOR}"${OS_ID} ${OS_RELEASE} IP地址、网关地址和DNS已修改成功,请使用新IP重新登录!"${END}cat > /etc/NetworkManager/system-connections/${ETHNAME}.nmconnection <<-EOF
[connection]
id=${ETHNAME}
type=ethernet
interface-name=${ETHNAME}[ethernet][ipv4]
address1=${IP}/${C_PREFIX},${GATEWAY}
dns=223.5.5.5;180.76.76.76;
method=manual[ipv6]
addr-gen-mode=default
method=auto[proxy]
EOFfinmcli con reload && nmcli dev up ${ETHNAME} >& /dev/null
}set_ubuntu_ip(){while true; doread -p "请输入IP地址: " IPcheck_ip ${IP}[ $? -eq 0 ] && breakdoneread -p "请输入子网掩码位数: " U_PREFIXwhile true; doread -p "请输入网关地址: " GATEWAYcheck_ip ${GATEWAY}[ $? -eq 0 ] && breakdoneif [ ${OS_RELEASE_VERSION} == "18" ];thencat > /etc/netplan/01-netcfg.yaml <<-EOF
network:version: 2renderer: networkdethernets:eth0:dhcp4: nodhcp6: noaddresses: [${IP}/${U_PREFIX}] gateway4: ${GATEWAY}nameservers:addresses: [223.5.5.5, 180.76.76.76]
EOFelif [ ${OS_RELEASE_VERSION} == "20" ];thencat > /etc/netplan/00-installer-config.yaml <<-EOF
network:version: 2renderer: networkdethernets:eth0:dhcp4: nodhcp6: noaddresses: [${IP}/${U_PREFIX}] gateway4: ${GATEWAY}nameservers:addresses: [223.5.5.5, 180.76.76.76]
EOFelsecat > /etc/netplan/00-installer-config.yaml <<-EOF
network:version: 2renderer: networkdethernets:eth0:dhcp4: nodhcp6: noaddresses: [${IP}/${U_PREFIX}]routes:- to: defaultvia: ${GATEWAY}nameservers:addresses: [223.5.5.5, 180.76.76.76]
EOFfi    ${COLOR}"${OS_ID} ${OS_RELEASE} IP地址、网关地址和DNS已修改成功,请重新启动系统后生效!"${END}
}set_ip(){if [ ${OS_ID} == "CentOS" -o ${OS_ID} == "Rocky" ];thenset_rocky_centos_ipelseset_ubuntu_ipfi
}set_dual_centos_ip(){ETHNAME=`ip addr | awk -F"[ :]" '/^2/{print $3}'`ETHNAME2=`ip addr | awk -F"[ :]" '/^3/{print $3}'`CONNECTION_NAME1=`nmcli dev | awk 'NR==2{print $4,$5,$6}'`CONNECTION_NAME2=`nmcli dev | awk 'NR==3{print $4,$5,$6}'`while true; doread -p "请输入第一块网卡IP地址: " IPcheck_ip ${IP}[ $? -eq 0 ] && breakdoneread -p "请输入子网掩码位数: " C_PREFIXwhile true; doread -p "请输入网关地址: " GATEWAYcheck_ip ${GATEWAY}[ $? -eq 0 ] && breakdonewhile true; doread -p "请输入第二块网卡IP地址: " IP2check_ip ${IP2}[ $? -eq 0 ] && breakdoneread -p "请输入子网掩码位数: " C_PREFIX2if [ ${OS_RELEASE_VERSION} == "7" -o ${OS_RELEASE_VERSION} == "8" ];thennmcli connection modify "${CONNECTION_NAME}" con-name ${ETHNAME}cat > /etc/sysconfig/network-scripts/ifcfg-${ETHNAME} <<-EOF
NAME=${ETHNAME}
DEVICE=${ETHNAME}
ONBOOT=yes
BOOTPROTO=none
TYPE=Ethernet
IPADDR=${IP}
PREFIX=${C_PREFIX}
GATEWAY=${GATEWAY}
DNS1=223.5.5.5
DNS2=180.76.76.76
EOFnmcli connection modify "${CONNECTION_NAME2}" con-name ${ETHNAME2}cat > /etc/sysconfig/network-scripts/ifcfg-${ETHNAME2} <<-EOF
NAME=${ETHNAME2}
DEVICE=${ETHNAME2}
ONBOOT=yes
BOOTPROTO=none
TYPE=Ethernet
IPADDR=${IP2}
PREFIX=${C_PREFIX2}
EOF${COLOR}"${OS_ID} ${OS_RELEASE} IP地址、网关地址和DNS已修改成功,10秒后,机器会自动重启!"${END}sleep 10 && shutdown -r nowelse${COLOR}"${OS_ID} ${OS_RELEASE} IP地址、网关地址和DNS已修改成功,请使用新IP重新登录!"${END}cat > /etc/NetworkManager/system-connections/${ETHNAME}.nmconnection <<-EOF
[connection]
id=${ETHNAME}
type=ethernet
interface-name=${ETHNAME}[ethernet][ipv4]
address1=${IP}/${C_PREFIX},${GATEWAY}
dns=223.5.5.5;180.76.76.76;
method=manual[ipv6]
addr-gen-mode=default
method=auto[proxy]
EOFnmcli connection modify "${CONNECTION_NAME2}" con-name ${ETHNAME2}cat > /etc/NetworkManager/system-connections/${ETHNAME2}.nmconnection <<-EOF
[connection]
id=${ETHNAME2}
type=ethernet
interface-name=${ETHNAME2}[ethernet][ipv4]
address1=${IP2}/${C_PREFIX2}
method=manual[ipv6]
addr-gen-mode=default
method=auto[proxy]
EOFchmod 600 /etc/NetworkManager/system-connections/${ETHNAME2}.nmconnectionfinmcli con reload && nmcli dev up ${ETHNAME} ${ETHNAME2} >& /dev/null
}set_dual_ubuntu_ip(){while true; doread -p "请输入第一块网卡IP地址: " IPcheck_ip ${IP}[ $? -eq 0 ] && breakdoneread -p "请输入子网掩码位数: " U_PREFIXwhile true; doread -p "请输入网关地址: " GATEWAYcheck_ip ${GATEWAY}[ $? -eq 0 ] && breakdonewhile true; doread -p "请输入第二块网卡IP地址: " IP2check_ip ${IP2}[ $? -eq 0 ] && breakdoneread -p "请输入子网掩码位数: " U_PREFIX2if [ ${OS_RELEASE_VERSION} == "18" ];thencat > /etc/netplan/01-netcfg.yaml <<-EOF
network:version: 2renderer: networkdethernets:eth0:dhcp4: nodhcp6: noaddresses: [${IP}/${U_PREFIX}] gateway4: ${GATEWAY}nameservers:addresses: [223.5.5.5, 180.76.76.76]eth1:dhcp4: nodhcp6: noaddresses: [${IP2}/${U_PREFIX2}] 
EOFelif [ ${OS_RELEASE_VERSION} == "20" ];thencat > /etc/netplan/00-installer-config.yaml <<-EOF
network:version: 2renderer: networkdethernets:eth0:dhcp4: nodhcp6: noaddresses: [${IP}/${U_PREFIX}] gateway4: ${GATEWAY}nameservers:addresses: [223.5.5.5, 180.76.76.76]eth1:dhcp4: nodhcp6: noaddresses: [${IP2}/${U_PREFIX2}] 
EOFelsecat > /etc/netplan/00-installer-config.yaml <<-EOF
network:version: 2renderer: networkdethernets:eth0:dhcp4: nodhcp6: noaddresses: [${IP}/${U_PREFIX}] routes:- to: defaultvia: ${GATEWAY}nameservers:addresses: [223.5.5.5, 180.76.76.76]eth1:dhcp4: nodhcp6: noaddresses: [${IP2}/${U_PREFIX2}] 
EOFfi${COLOR}"${OS_ID} ${OS_RELEASE} IP地址、网关地址和DNS已修改成功,请重新启动系统后生效!"${END}
}set_dual_ip(){if [ ${OS_ID} == "CentOS" -o ${OS_ID} == "Rocky" ];thenset_dual_centos_ipelseset_dual_ubuntu_ip fi
}set_hostname(){read -p "请输入主机名: " HOSThostnamectl set-hostname ${HOST}${COLOR}"${OS_ID} ${OS_RELEASE} 主机名设置成功,请重新登录生效!"${END}
}aliyun(){MIRROR=mirrors.aliyun.com
}huawei(){MIRROR=repo.huaweicloud.com
}tencent(){MIRROR=mirrors.tencent.com
}tuna(){MIRROR=mirrors.tuna.tsinghua.edu.cn
}netease(){MIRROR=mirrors.163.com
}sohu(){MIRROR=mirrors.sohu.com
}nju(){MIRROR=mirrors.nju.edu.cn
}ustc(){MIRROR=mirrors.ustc.edu.cn
}sjtu(){MIRROR=mirrors.sjtug.sjtu.edu.cn
}pku(){MIRROR=mirrors.pku.edu.cn
}xjtu(){MIRROR=mirrors.xjtu.edu.cn
}set_yum_rocky9(){[ -d /etc/yum.repos.d/backup ] || { mkdir /etc/yum.repos.d/backup; mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/backup; }MIRROR_MIRROR=`echo ${MIRROR} | awk -F"." '{print $2}'`if [ ${MIRROR_MIRROR} == "aliyun" -o ${MIRROR_MIRROR} == "xjtu" ];thencat > /etc/yum.repos.d/base.repo <<-EOF
[BaseOS]
name=BaseOS
baseurl=https://${MIRROR}/rockylinux/\$releasever/BaseOS/\$basearch/os/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-Rocky-\$releasever[AppStream]
name=AppStream
baseurl=https://${MIRROR}/rockylinux/\$releasever/AppStream/\$basearch/os/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-Rocky-\$releasever[extras]
name=extras
baseurl=https://${MIRROR}/rockylinux/\$releasever/extras/\$basearch/os/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-Rocky-\$releasever
EOFelsecat > /etc/yum.repos.d/base.repo <<-EOF
[BaseOS]
name=BaseOS
baseurl=https://${MIRROR}/rocky/\$releasever/BaseOS/\$basearch/os/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-Rocky-\$releasever[AppStream]
name=AppStream
baseurl=https://${MIRROR}/rocky/\$releasever/AppStream/\$basearch/os/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-Rocky-\$releasever[extras]
name=extras
baseurl=https://${MIRROR}/rocky/\$releasever/extras/\$basearch/os/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-Rocky-\$releasever
EOFfi${COLOR}"更新镜像源中,请稍等..."${END}dnf clean all &> /dev/nulldnf makecache &> /dev/null${COLOR}"${OS_ID} ${OS_RELEASE} YUM源设置完成!"${END}
}rocky9_base_menu(){while true;doecho -e "\E[$[RANDOM%7+31];1m"cat <<-EOF
1)阿里镜像源
2)网易镜像源
3)搜狐镜像源
4)南京大学镜像源
5)中科大镜像源
6)上海交通大学镜像源
7)北京大学镜像源
8)西安交通大学镜像源
9)退出
EOFecho -e '\E[0m'read -p "请输入镜像源编号(1-9): " NUMcase ${NUM} in1)aliyunset_yum_rocky9;;2)neteaseset_yum_rocky9;;3)sohuset_yum_rocky9;;4)njuset_yum_rocky9;;5)ustcset_yum_rocky9;;6)sjtuset_yum_rocky9;;7)pkuset_yum_rocky9;;8)xjtuset_yum_rocky9;;9)break;;*)${COLOR}"输入错误,请输入正确的数字(1-9)!"${END};;esacdone
}set_devel_rocky9(){MIRROR_MIRROR=`echo ${MIRROR} | awk -F"." '{print $2}'`if [ ${MIRROR_MIRROR} == "aliyun" -o ${MIRROR_MIRROR} == "xjtu" ];thencat > /etc/yum.repos.d/devel.repo <<-EOF
[devel]
name=devel
baseurl=https://${MIRROR}/rockylinux/\$releasever/devel/\$basearch/os/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-Rocky-\$releasever
EOFelsecat > /etc/yum.repos.d/devel.repo <<-EOF
[devel]
name=devel
baseurl=https://${MIRROR}/rocky/\$releasever/devel/\$basearch/os/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-Rocky-\$releasever
EOFfi${COLOR}"更新镜像源中,请稍等..."${END}dnf clean all &> /dev/nulldnf makecache &> /dev/null${COLOR}"${OS_ID} ${OS_RELEASE} devel源设置完成!"${END}
}rocky9_devel_menu(){while true;doecho -e "\E[$[RANDOM%7+31];1m"cat <<-EOF
1)阿里镜像源
2)网易镜像源
3)搜狐镜像源
4)南京大学镜像源
5)中科大镜像源
6)上海交通大学镜像源
7)北京大学镜像源
8)西安交通大学镜像源
9)退出
EOFecho -e '\E[0m'read -p "请输入镜像源编号(1-9): " NUMcase ${NUM} in1)aliyunset_devel_rocky9;;2)neteaseset_devel_rocky9;;3)sohuset_devel_rocky9;;4)njuset_devel_rocky9;;5)ustcset_devel_rocky9;;6)sjtuset_devel_rocky9;;7)pkuset_devel_rocky9;;8)xjtuset_devel_rocky9;;9)break;;*)${COLOR}"输入错误,请输入正确的数字(1-9)!"${END};;esacdone
}set_yum_rocky8(){[ -d /etc/yum.repos.d/backup ] || { mkdir /etc/yum.repos.d/backup; mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/backup; }MIRROR_MIRROR=`echo ${MIRROR} | awk -F"." '{print $2}'`if [ ${MIRROR_MIRROR} == "aliyun" -o ${MIRROR_MIRROR} == "xjtu" ];thencat > /etc/yum.repos.d/base.repo <<-EOF
[BaseOS]
name=BaseOS
baseurl=https://${MIRROR}/rockylinux/\$releasever/BaseOS/\$basearch/os/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-rockyofficial[AppStream]
name=AppStream
baseurl=https://${MIRROR}/rockylinux/\$releasever/AppStream/\$basearch/os/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-rockyofficial[extras]
name=extras
baseurl=https://${MIRROR}/rockylinux/\$releasever/extras/\$basearch/os/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-rockyofficial
EOFelsecat > /etc/yum.repos.d/base.repo <<-EOF
[BaseOS]
name=BaseOS
baseurl=https://${MIRROR}/rocky/\$releasever/BaseOS/\$basearch/os/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-rockyofficial[AppStream]
name=AppStream
baseurl=https://${MIRROR}/rocky/\$releasever/AppStream/\$basearch/os/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-rockyofficial[extras]
name=extras
baseurl=https://${MIRROR}/rocky/\$releasever/extras/\$basearch/os/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-rockyofficial
EOFfi${COLOR}"更新镜像源中,请稍等..."${END}dnf clean all &> /dev/nulldnf makecache &> /dev/null${COLOR}"${OS_ID} ${OS_RELEASE} YUM源设置完成!"${END}
}rocky8_base_menu(){while true;doecho -e "\E[$[RANDOM%7+31];1m"cat <<-EOF
1)阿里镜像源
2)网易镜像源
3)搜狐镜像源
4)南京大学镜像源
5)中科大镜像源
6)上海交通大学镜像源
7)北京大学镜像源
8)西安交通大学镜像源
9)退出
EOFecho -e '\E[0m'read -p "请输入镜像源编号(1-9): " NUMcase ${NUM} in1)aliyunset_yum_rocky8;;2)neteaseset_yum_rocky8;;3)sohuset_yum_rocky8;;4)njuset_yum_rocky8;;5)ustcset_yum_rocky8;;6)sjtuset_yum_rocky8;;7)pkuset_yum_rocky8_9;;8)xjtuset_yum_rocky8_9;;9)break;;*)${COLOR}"输入错误,请输入正确的数字(1-9)!"${END};;esacdone
}set_powertools_rocky8(){MIRROR_MIRROR=`echo ${MIRROR} | awk -F"." '{print $2}'`if [ ${MIRROR_MIRROR} == "aliyun" -o ${MIRROR_MIRROR} == "xjtu" ];thencat > /etc/yum.repos.d/powertools.repo <<-EOF
[PowerTools]
name=PowerTools
baseurl=https://${MIRROR}/rockylinux/\$releasever/PowerTools/\$basearch/os/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-rockyofficial
EOFelsecat > /etc/yum.repos.d/powertools.repo <<-EOF
[PowerTools]
name=PowerTools
baseurl=https://${MIRROR}/rocky/\$releasever/PowerTools/\$basearch/os/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-rockyofficial
EOFfi${COLOR}"更新镜像源中,请稍等..."${END}dnf clean all &> /dev/nulldnf makecache &> /dev/null${COLOR}"${OS_ID} ${OS_RELEASE} PowerTools源设置完成!"${END}
}rocky8_powertools_menu(){while true;doecho -e "\E[$[RANDOM%7+31];1m"cat <<-EOF
1)阿里镜像源
2)网易镜像源
3)搜狐镜像源
4)南京大学镜像源
5)中科大镜像源
6)上海交通大学镜像源
7)北京大学镜像源
8)西安交通大学镜像源
9)退出
EOFecho -e '\E[0m'read -p "请输入镜像源编号(1-9): " NUMcase ${NUM} in1)aliyunset_powertools_rocky8;;2)neteaseset_powertools_rocky8;;3)sohuset_powertools_rocky8;;4)njuset_powertools_rocky8;;5)ustcset_powertools_rocky8;;6)sjtuset_powertools_rocky8;;7)pkuset_powertools_rocky8;;8)xjtuset_powertools_rocky8;;9)break;;*)${COLOR}"输入错误,请输入正确的数字(1-9)!"${END};;esacdone
}set_yum_centos_stream9(){[ -d /etc/yum.repos.d/backup ] || { mkdir /etc/yum.repos.d/backup; mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/backup; }cat > /etc/yum.repos.d/base.repo <<-EOF
[BaseOS]
name=BaseOS
baseurl=https://${MIRROR}/centos-stream/\$stream/BaseOS/\$basearch/os/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial[AppStream]
name=AppStream
baseurl=https://${MIRROR}/centos-stream/\$stream/AppStream/\$basearch/os/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial[extras-common]
name=extras-common
baseurl=https://${MIRROR}/centos-stream/SIGs/\$stream/extras/\$basearch/extras-common/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
EOF${COLOR}"更新镜像源中,请稍等..."${END}dnf clean all &> /dev/nulldnf makecache &> /dev/null${COLOR}"${OS_ID} ${OS_RELEASE} YUM源设置完成!"${END}
}centos_stream9_base_menu(){while true;doecho -e "\E[$[RANDOM%7+31];1m"cat <<-EOF
1)阿里镜像源
2)华为镜像源
3)腾讯镜像源
4)清华镜像源
5)网易镜像源
6)南京大学镜像源
7)中科大镜像源
8)北京大学镜像源
9)退出
EOFecho -e '\E[0m'read -p "请输入镜像源编号(1-9): " NUMcase ${NUM} in1)aliyunset_yum_centos_stream9;;2)huaweiset_yum_centos_stream9;;3)tencentset_yum_centos_stream9;;4)tunaset_yum_centos_stream9;;5)neteaseset_yum_centos_stream9;;6)njuset_yum_centos_stream9;;7)ustcset_yum_centos_stream9;;8)pkuset_yum_centos_stream9;;9)break;;*)${COLOR}"输入错误,请输入正确的数字(1-9)!"${END};;esacdone
}set_crb_centos_stream9(){cat > /etc/yum.repos.d/crb.repo <<-EOF
[crb]
name=crb
baseurl=https://${MIRROR}/centos-stream/\$releasever-stream/CRB/\$basearch/os
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
EOF${COLOR}"更新镜像源中,请稍等..."${END}dnf clean all &> /dev/nulldnf makecache &> /dev/null${COLOR}"${OS_ID} ${OS_RELEASE} crb源设置完成!"${END}
}centos_stream9_crb_menu(){while true;doecho -e "\E[$[RANDOM%7+31];1m"cat <<-EOF
1)阿里镜像源
2)华为镜像源
3)腾讯镜像源
4)清华镜像源
5)网易镜像源
6)南京大学镜像源
7)中科大镜像源
8)北京大学镜像源
9)西安交通大学镜像源
10)退出
EOFecho -e '\E[0m'read -p "请输入镜像源编号(1-10): " NUMcase ${NUM} in1)aliyunset_crb_centos_stream9;;2)huaweiset_crb_centos_stream9;;3)tencentset_crb_centos_stream9;;4)tunaset_crb_centos_stream9;;5)neteaseset_crb_centos_stream9;;6)njuset_crb_centos_stream9;;7)ustcset_crb_centos_stream9;;8)pkuset_crb_centos_stream9;;9)xjtuset_crb_centos_stream9;;10)break;;*)${COLOR}"输入错误,请输入正确的数字(1-10)!"${END};;esacdone
}set_yum_centos_stream8(){[ -d /etc/yum.repos.d/backup ] || { mkdir /etc/yum.repos.d/backup; mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/backup; }cat > /etc/yum.repos.d/base.repo <<-EOF
[BaseOS]
name=BaseOS
baseurl=https://${MIRROR}/centos/\$stream/BaseOS/\$basearch/os/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial[AppStream]
name=AppStream
baseurl=https://${MIRROR}/centos/\$stream/AppStream/\$basearch/os/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial[extras]
name=extras
baseurl=https://${MIRROR}/centos/\$stream/extras/\$basearch/os/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
EOF${COLOR}"更新镜像源中,请稍等..."${END}dnf clean all &> /dev/nulldnf makecache &> /dev/null${COLOR}"${OS_ID} ${OS_RELEASE} YUM源设置完成!"${END}
}centos_stream8_base_menu(){while true;doecho -e "\E[$[RANDOM%7+31];1m"cat <<-EOF
1)阿里镜像源
2)华为镜像源
3)腾讯镜像源
4)清华镜像源
5)网易镜像源
6)南京大学镜像源
7)中科大镜像源
8)北京大学镜像源
9)西安交通大学镜像源
10)退出
EOFecho -e '\E[0m'read -p "请输入镜像源编号(1-10): " NUMcase ${NUM} in1)aliyunset_yum_centos_stream8;;2)huaweiset_yum_centos_stream8;;3)tencentset_yum_centos_stream8;;4)tunaset_yum_centos_stream8;;5)neteaseset_yum_centos_stream8;;6)njuset_yum_centos_stream8;;7)ustcset_yum_centos_stream8;;8)pkuset_yum_centos_stream8;;9)xjtuset_yum_centos_stream8;;10)break;;*)${COLOR}"输入错误,请输入正确的数字(1-10)!"${END};;esacdone
}set_powertools_centos_stream8(){cat > /etc/yum.repos.d/powertools.repo <<-EOF
[PowerTools]
name=PowerTools
baseurl=https://${MIRROR}/centos/\$stream/PowerTools/\$basearch/os/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
EOF${COLOR}"更新镜像源中,请稍等..."${END}dnf clean all &> /dev/nulldnf makecache &> /dev/null${COLOR}"${OS_ID} ${OS_RELEASE} PowerTools源设置完成!"${END}
}centos_stream8_powertools_menu(){while true;doecho -e "\E[$[RANDOM%7+31];1m"cat <<-EOF
1)阿里镜像源
2)华为镜像源
3)腾讯镜像源
4)清华镜像源
5)网易镜像源
6)南京大学镜像源
7)中科大镜像源
8)北京大学镜像源
9)西安交通大学镜像源
10)退出
EOFecho -e '\E[0m'read -p "请输入镜像源编号(1-10): " NUMcase ${NUM} in1)aliyunset_powertools_centos_stream8;;2)huaweiset_powertools_centos_stream8;;3)tencentset_powertools_centos_stream8;;4)tunaset_powertools_centos_stream8;;5)neteaseset_powertools_centos_stream8;;6)njuset_powertools_centos_stream8;;7)ustcset_powertools_centos_stream8;;8)pkuset_powertools_centos_stream8;;9)xjtuset_powertools_centos_stream8;;10)break;;*)${COLOR}"输入错误,请输入正确的数字(1-10)!"${END};;esacdone
}set_epel_rocky_centos8_9(){MIRROR_URL=`echo ${MIRROR} | awk -F"." '{print $2}'`if [ ${MIRROR_URL} == "sohu" ];thencat > /etc/yum.repos.d/epel.repo <<-EOF
[epel]
name=epel
baseurl=https://${MIRROR}/fedora-epel/\$releasever/Everything/\$basearch/
gpgcheck=1
gpgkey=https://${MIRROR}/fedora-epel/RPM-GPG-KEY-EPEL-\$releasever
EOFelif [ ${MIRROR_URL} == "sjtu" ];thencat > /etc/yum.repos.d/epel.repo <<-EOF
[epel]
name=epel
baseurl=https://${MIRROR}/fedora/epel/\$releasever/Everything/\$basearch/
gpgcheck=1
gpgkey=https://${MIRROR}/fedora/epel/RPM-GPG-KEY-EPEL-\$releasever
EOFelsecat > /etc/yum.repos.d/epel.repo <<-EOF
[epel]
name=epel
baseurl=https://${MIRROR}/epel/\$releasever/Everything/\$basearch/
gpgcheck=1
gpgkey=https://${MIRROR}/epel/RPM-GPG-KEY-EPEL-\$releasever
EOFfi${COLOR}"更新镜像源中,请稍等..."${END}dnf clean all &> /dev/nulldnf makecache &> /dev/null${COLOR}"${OS_ID} ${OS_RELEASE} EPEL源设置完成!"${END}
}rocky_centos8_9_epel_menu(){while true;doecho -e "\E[$[RANDOM%7+31];1m"cat <<-EOF
1)阿里镜像源
2)华为镜像源
3)腾讯镜像源
4)清华镜像源
5)搜狐镜像源
6)南京大学镜像源
7)中科大镜像源
8)上海交通大学镜像源
9)北京大学镜像源
10)西安交通大学镜像源
11)退出
EOFecho -e '\E[0m'read -p "请输入镜像源编号(1-11): " NUMcase ${NUM} in1)aliyunset_epel_rocky_centos8_9;;2)huaweiset_epel_rocky_centos8_9;;3)tencentset_epel_rocky_centos8_9;;4)tunaset_epel_rocky_centos8_9;;5)sohuset_epel_rocky_centos8_9;;6)njuset_epel_rocky_centos8_9;;7)ustcset_epel_rocky_centos8_9;;8)sjtuset_epel_rocky_centos8_9;;9)pkuset_epel_rocky_centos8_9;;10)xjtuset_epel_rocky_centos8_9;;11)break;;*)${COLOR}"输入错误,请输入正确的数字(1-11)!"${END};;esacdone
}set_yum_centos7(){    [ -d /etc/yum.repos.d/backup ] || { mkdir /etc/yum.repos.d/backup; mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/backup; }cat > /etc/yum.repos.d/base.repo <<-EOF
[base]
name=base
baseurl=https://${MIRROR}/centos/\$releasever/os/\$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-\$releasever[extras]
name=extras
baseurl=https://${MIRROR}/centos/\$releasever/extras/\$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-\$releasever[updates]
name=updates
baseurl=https://${MIRROR}/centos/\$releasever/updates/\$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-\$releasever
EOF${COLOR}"更新镜像源中,请稍等..."${END}yum clean all &> /dev/nullyum makecache &> /dev/null${COLOR}"${OS_ID} ${OS_RELEASE} YUM源设置完成!"${END}
}centos7_base_menu(){while true;doecho -e "\E[$[RANDOM%7+31];1m"cat <<-EOF
1)阿里镜像源
2)华为镜像源
3)腾讯镜像源
4)清华镜像源
5)网易镜像源
6)南京大学镜像源
7)中科大镜像源
8)北京大学镜像源
9)西安交通大学镜像源
10)退出
EOFecho -e '\E[0m'read -p "请输入镜像源编号(1-10): " NUMcase ${NUM} in1)aliyunset_yum_centos7;;2)huaweiset_yum_centos7;;3)tencentset_yum_centos7;;4)tunaset_yum_centos7;;5)neteaseset_yum_centos7;;6)njuset_yum_centos7;;7)ustcset_yum_centos7;;8)pkuset_yum_centos7;;9)xjtuset_yum_centos7;;10)break;;*)${COLOR}"输入错误,请输入正确的数字(1-10)!"${END};;esacdone
}set_epel_centos7(){MIRROR_URL=`echo ${MIRROR} | awk -F"." '{print $2}'`if [ ${MIRROR_URL} == "sohu" ];thencat > /etc/yum.repos.d/epel.repo <<-EOF
[epel]
name=epel
baseurl=https://${MIRROR}/fedora-epel/\$releasever/\$basearch/
gpgcheck=1
gpgkey=https://${MIRROR}/fedora-epel/RPM-GPG-KEY-EPEL-\$releasever
EOFelif [ ${MIRROR_URL} == "sjtu" ];thencat > /etc/yum.repos.d/epel.repo <<-EOF
[epel]
name=epel
baseurl=https://${MIRROR}/fedora/epel/\$releasever/\$basearch/
gpgcheck=1
gpgkey=https://${MIRROR}/fedora/epel/RPM-GPG-KEY-EPEL-\$releasever
EOFelsecat > /etc/yum.repos.d/epel.repo <<-EOF
[epel]
name=epel
baseurl=https://${MIRROR}/epel/\$releasever/\$basearch/
gpgcheck=1
gpgkey=https://${MIRROR}/epel/RPM-GPG-KEY-EPEL-\$releasever
EOFfi${COLOR}"更新镜像源中,请稍等..."${END}yum clean all &> /dev/nullyum makecache &> /dev/null${COLOR}"${OS_ID} ${OS_RELEASE} EPEL源设置完成!"${END}
}centos7_epel_menu(){while true;doecho -e "\E[$[RANDOM%7+31];1m"cat <<-EOF
1)阿里镜像源
2)华为镜像源
3)腾讯镜像源
4)清华镜像源
5)搜狐镜像源
6)南京大学镜像源
7)中科大镜像源
8)上海交通大学镜像源
9)北京大学镜像源
10)西安交通大学镜像源
11)退出
EOFecho -e '\E[0m'read -p "请输入镜像源编号(1-11): " NUMcase ${NUM} in1)aliyunset_epel_centos7;;2)huaweiset_epel_centos7;;3)tencentset_epel_centos7;;4)tunaset_epel_centos7;;5)sohuset_epel_centos7;;6)njuset_epel_centos7;;7)ustcset_epel_centos7;;8)sjtuset_epel_centos7;;9)pkuset_epel_centos7;;10)xjtuset_epel_centos7;;11)break;;*)${COLOR}"输入错误,请输入正确的数字(1-11)!"${END};;esacdone
}rocky_menu(){while true;doecho -e "\E[$[RANDOM%7+31];1m"cat <<-EOF
1)base仓库
2)epel仓库
3)Rocky 9 devel仓库
4)Rocky 8 PowerTools仓库
5)退出
EOFecho -e '\E[0m'read -p "请输入镜像源编号(1-5): " NUMcase ${NUM} in1)if [ ${OS_RELEASE_VERSION} == "8" ];thenrocky8_base_menuelserocky9_base_menufi;;2)rocky_centos8_9_epel_menu;;3)if [ ${OS_RELEASE_VERSION} == "9" ];thenrocky9_devel_menufi;;4)if [ ${OS_RELEASE_VERSION} == "8" ];thenrocky8_powertools_menufi;;5)break;;*)${COLOR}"输入错误,请输入正确的数字(1-5)!"${END};;esacdone
}centos_menu(){while true;doecho -e "\E[$[RANDOM%7+31];1m"cat <<-EOF
1)base仓库
2)epel仓库
3)CentOS Stream 9 crb仓库
4)CentOS Stream 8 PowerTools仓库
5)退出
EOFecho -e '\E[0m'read -p "请输入镜像源编号(1-5): " NUMcase ${NUM} in1)if [ ${OS_NAME} == "Stream" ];thenif [ ${OS_RELEASE_VERSION} == "8" ];thencentos_stream8_base_menuelsecentos_stream9_base_menufielsecentos7_base_menufi;;2)if [ ${OS_RELEASE_VERSION} == "7" ];thencentos7_epel_menuelserocky_centos8_9_epel_menufi;;3)if [ ${OS_RELEASE_VERSION} == "9" ];thencentos_stream9_crb_menufi;;4)if [ ${OS_RELEASE_VERSION} == "8" ];thencentos_stream8_powertools_menufi;;5)break;;*)${COLOR}"输入错误,请输入正确的数字(1-5)!"${END};;esacdone
}set_apt(){mv /etc/apt/sources.list /etc/apt/sources.list.bakcat > /etc/apt/sources.list <<-EOF
deb http://${MIRROR}/ubuntu/ $(lsb_release -cs) main restricted universe multiverse
deb-src http://${MIRROR}/ubuntu/ $(lsb_release -cs) main restricted universe multiversedeb http://${MIRROR}/ubuntu/ $(lsb_release -cs)-security main restricted universe multiverse
deb-src http://${MIRROR}/ubuntu/ $(lsb_release -cs)-security main restricted universe multiversedeb http://${MIRROR}/ubuntu/ $(lsb_release -cs)-updates main restricted universe multiverse
deb-src http://${MIRROR}/ubuntu/ $(lsb_release -cs)-updates main restricted universe multiversedeb http://${MIRROR}/ubuntu/ $(lsb_release -cs)-proposed main restricted universe multiverse
deb-src http://${MIRROR}/ubuntu/ $(lsb_release -cs)-proposed main restricted universe multiversedeb http://${MIRROR}/ubuntu/ $(lsb_release -cs)-backports main restricted universe multiverse
deb-src http://${MIRROR}/ubuntu/ $(lsb_release -cs)-backports main restricted universe multiverse
EOF${COLOR}"更新镜像源中,请稍等..."${END}apt update &> /dev/null${COLOR}"${OS_ID} ${OS_RELEASE} APT源设置完成!"${END}
}apt_menu(){while true;doecho -e "\E[$[RANDOM%7+31];1m"cat <<-EOF
1)阿里镜像源
2)华为镜像源
3)腾讯镜像源
4)清华镜像源
5)网易镜像源
6)南京大学镜像源
7)中科大镜像源
9)北京大学镜像源
10)西安交通大学镜像源
11)退出
EOFecho -e '\E[0m'read -p "请输入镜像源编号(1-11): " NUMcase ${NUM} in1)aliyunset_apt;;2)huaweiset_apt;;3)tencentset_apt;;4)tunaset_apt;;5)neteaseset_apt;;6)njuset_apt;;7)ustcset_apt;;8)sjtuset_apt;;9)pkuset_apt;;10)xjtuset_apt;;11)break;;*)${COLOR}"输入错误,请输入正确的数字(1-11)!"${END};;esacdone
}set_mirror_repository(){if [ ${OS_ID} == "CentOS" ];thencentos_menuelif [ ${OS_ID} == "Rocky" ];thenrocky_menuelseapt_menufi
}rocky_centos_minimal_install(){${COLOR}'开始安装“Minimal安装建议安装软件包”,请稍等......'${END}yum -y install gcc make autoconf gcc-c++ glibc glibc-devel pcre pcre-devel openssl openssl-devel systemd-devel zlib-devel vim lrzsz tree tmux lsof tcpdump wget net-tools iotop bc bzip2 zip unzip nfs-utils man-pages &> /dev/null${COLOR}"${OS_ID} ${OS_RELEASE} Minimal安装建议安装软件包已安装完成!"${END}
}ubuntu_minimal_install(){${COLOR}'开始安装“Minimal安装建议安装软件包”,请稍等......'${END}apt -y install iproute2 ntpdate tcpdump telnet traceroute nfs-kernel-server nfs-common lrzsz tree openssl libssl-dev libpcre3 libpcre3-dev zlib1g-dev gcc openssh-server iotop unzip zip${COLOR}"${OS_ID} ${OS_RELEASE} Minimal安装建议安装软件包已安装完成!"${END}
}minimal_install(){if [ ${OS_ID} == "CentOS" -o ${OS_ID} == "Rocky" ] &> /dev/null;thenrocky_centos_minimal_installelseubuntu_minimal_installfi
}disable_firewall(){if [ ${OS_ID} == "CentOS" -o ${OS_ID} == "Rocky" ];thenrpm -q firewalld &> /dev/null && { systemctl disable --now firewalld &> /dev/null; ${COLOR}"${OS_ID} ${OS_RELEASE} Firewall防火墙已关闭!"${END}; } || ${COLOR}"${OS_ID} ${OS_RELEASE} iptables防火墙已关闭!"${END}elsedpkg -s ufw &> /dev/null && { systemctl disable --now ufw &> /dev/null; ${COLOR}"${OS_ID} ${OS_RELEASE} ufw防火墙已关闭!"${END}; } || ${COLOR}"${OS_ID} ${OS_RELEASE}  没有ufw防火墙服务,不用关闭!"${END}fi
}disable_selinux(){if [ ${OS_ID} == "CentOS" -o ${OS_ID} == "Rocky" ];thenif [ `getenforce` == "Enforcing" ];thensed -ri.bak 's/^(SELINUX=).*/\1disabled/' /etc/selinux/config${COLOR}"${OS_ID} ${OS_RELEASE} SELinux已禁用,请重新启动系统后才能生效!"${END}else${COLOR}"${OS_ID} ${OS_RELEASE} SELinux已被禁用,不用设置!"${END}fielse${COLOR}"${OS_ID} ${OS_RELEASE} SELinux默认没有安装,不用设置!"${END}fi
}set_swap(){sed -ri 's/.*swap.*/#&/' /etc/fstabif [ ${OS_ID} == "Ubuntu" ];thenif [ ${OS_RELEASE_VERSION} == 20 -o ${OS_RELEASE_VERSION} == 22 ];thenSD_NAME=`lsblk|awk -F"[ └─]" '/SWAP/{printf $3}'`systemctl mask dev-${SD_NAME}.swap &> /dev/nullfifiswapoff -a${COLOR}"${OS_ID} ${OS_RELEASE} 禁用swap成功!"${END}
}set_localtime(){ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtimeecho 'Asia/Shanghai' >/etc/timezoneif [ ${OS_ID} == "Ubuntu" ];thencat >> /etc/default/locale <<-EOF
LC_TIME=en_DK.UTF-8
EOFfi${COLOR}"${OS_ID} ${OS_RELEASE} 系统时区已设置成功,请重启系统后生效!"${END}
}set_limits(){cat >> /etc/security/limits.conf <<-EOF
root     soft   core     unlimited
root     hard   core     unlimited
root     soft   nproc    1000000
root     hard   nproc    1000000
root     soft   nofile   1000000
root     hard   nofile   1000000
root     soft   memlock  32000
root     hard   memlock  32000
root     soft   msgqueue 8192000
root     hard   msgqueue 8192000
EOF${COLOR}"${OS_ID} ${OS_RELEASE} 优化资源限制参数成功!"${END}
}set_kernel(){modprobe  br_netfiltercat > /etc/sysctl.conf <<-EOF
# Controls source route verification
net.ipv4.conf.default.rp_filter = 1
net.ipv4.ip_nonlocal_bind = 1
net.ipv4.ip_forward = 1# Do not accept source routing
net.ipv4.conf.default.accept_source_route = 0# Controls the System Request debugging functionality of the kernel
kernel.sysrq = 0# Controls whether core dumps will append the PID to the core filename.
# Useful for debugging multi-threaded applications.
kernel.core_uses_pid = 1# Controls the use of TCP syncookies
net.ipv4.tcp_syncookies = 1# Disable netfilter on bridges.
net.bridge.bridge-nf-call-ip6tables = 0
net.bridge.bridge-nf-call-iptables = 0
net.bridge.bridge-nf-call-arptables = 0# Controls the default maxmimum size of a mesage queue
kernel.msgmnb = 65536# Controls the maximum size of a message, in bytes
kernel.msgmax = 65536# Controls the maximum shared segment size, in bytes
kernel.shmmax = 68719476736# Controls the maximum number of shared memory segments, in pages
kernel.shmall = 4294967296# TCP kernel paramater
net.ipv4.tcp_mem = 786432 1048576 1572864
net.ipv4.tcp_rmem = 4096        87380   4194304
net.ipv4.tcp_wmem = 4096        16384   4194304
net.ipv4.tcp_window_scaling = 1
net.ipv4.tcp_sack = 1# socket buffer
net.core.wmem_default = 8388608
net.core.rmem_default = 8388608
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
net.core.netdev_max_backlog = 262144
net.core.somaxconn = 20480
net.core.optmem_max = 81920# TCP conn
net.ipv4.tcp_max_syn_backlog = 262144
net.ipv4.tcp_syn_retries = 3
net.ipv4.tcp_retries1 = 3
net.ipv4.tcp_retries2 = 15# tcp conn reuse
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_fin_timeout = 30
net.ipv4.tcp_timestamps = 0net.ipv4.tcp_max_tw_buckets = 20000
net.ipv4.tcp_max_orphans = 3276800
net.ipv4.tcp_synack_retries = 1
net.ipv4.tcp_syncookies = 1# keepalive conn
net.ipv4.tcp_keepalive_time = 300
net.ipv4.tcp_keepalive_intvl = 30
net.ipv4.tcp_keepalive_probes = 3
net.ipv4.ip_local_port_range = 10001    65000# swap
vm.overcommit_memory = 0
vm.swappiness = 10#net.ipv4.conf.eth1.rp_filter = 0
#net.ipv4.conf.lo.arp_ignore = 1
#net.ipv4.conf.lo.arp_announce = 2
#net.ipv4.conf.all.arp_ignore = 1
#net.ipv4.conf.all.arp_announce = 2
EOFMAIN_KERNEL=`uname -r | cut -d. -f1`SUB_KERNEL=`uname -r | cut -d. -f2`if [ ${MAIN_KERNEL} -lt "4" -a ${SUB_KERNEL} -lt "12" ];thencat >> /etc/sysctl.conf <<-EOF	
net.ipv4.tcp_tw_recycle = 0
EOFfisysctl -p &> /dev/null${COLOR}"${OS_ID} ${OS_RELEASE} 优化内核参数成功!"${END}
}optimization_sshd(){if [ ${OS_ID} == "CentOS" -o ${OS_ID} == "Rocky" ];thensed -ri.bak -e 's/^#(UseDNS).*/\1 no/' -e 's/^(GSSAPIAuthentication).*/\1 no/' /etc/ssh/sshd_configelsesed -ri.bak -e 's/^#(UseDNS).*/\1 no/' -e 's/^#(GSSAPIAuthentication).*/\1 no/' /etc/ssh/sshd_configfisystemctl restart sshd${COLOR}"${OS_ID} ${OS_RELEASE} SSH已优化完成!"${END}
}set_sshd_port(){disable_selinuxdisable_firewallread -p "请输入端口号: " PORTsed -i 's/#Port 22/Port '${PORT}'/' /etc/ssh/sshd_config${COLOR}"${OS_ID} ${OS_RELEASE} 更改SSH端口号已完成,请重启系统后生效!"${END}
}set_centos_alias(){ETHNAME=`ip addr | awk -F"[ :]" '/^2/{print $3}'`ETHNAME2=`ip addr | awk -F"[ :]" '/^3/{print $3}'`read -p "请输入网卡数量(例如:1或2): " IP_NUMif [ ${IP_NUM} == "1" ];thenif [ ${OS_RELEASE_VERSION} == "7" -o ${OS_RELEASE_VERSION} == "8" ];thencat >>~/.bashrc <<-EOF
alias cdnet="cd /etc/sysconfig/network-scripts"
alias cdrepo="cd /etc/yum.repos.d"
alias vie0="vim /etc/sysconfig/network-scripts/ifcfg-${ETHNAME}"
EOFelsecat >>~/.bashrc <<-EOF
alias cdnet="cd /etc/NetworkManager/system-connections"
alias cdrepo="cd /etc/yum.repos.d"
alias vie0="vim /etc/NetworkManager/system-connections/${ETHNAME}.nmconnection"
EOFfielse	if [ ${OS_RELEASE_VERSION} == "7" -o ${OS_RELEASE_VERSION} == "8" ];thencat >>~/.bashrc <<-EOF
alias cdnet="cd /etc/sysconfig/network-scripts"
alias cdrepo="cd /etc/yum.repos.d"
alias vie0="vim /etc/sysconfig/network-scripts/ifcfg-${ETHNAME}"
alias vie1="vim /etc/sysconfig/network-scripts/ifcfg-${ETHNAME2}"
EOFelsecat >>~/.bashrc <<-EOF
alias cdnet="cd /etc/NetworkManager/system-connections"
alias cdrepo="cd /etc/yum.repos.d"
alias vie0="vim /etc/NetworkManager/system-connections/${ETHNAME}.nmconnection"
alias vie1="vim /etc/NetworkManager/system-connections/${ETHNAME2}.nmconnection"
EOFfifiDISK_NAME=`lsblk|awk -F" " '/disk/{printf $1}' | cut -c1-4`if [ ${DISK_NAME} == "sda" ];thencat >>~/.bashrc <<-EOF
alias scandisk="echo '- - -' > /sys/class/scsi_host/host0/scan;echo '- - -' > /sys/class/scsi_host/host1/scan;echo '- - -' > /sys/class/scsi_host/host2/scan"
EOFfi${COLOR}"${OS_ID} ${OS_RELEASE} 系统别名已设置成功,请重新登陆后生效!"${END}
}set_ubuntu_alias(){cat >>~/.bashrc <<-EOF
alias cdnet="cd /etc/netplan"
alias cdapt="cd /etc/apt"
EOF${COLOR}"${OS_ID} ${OS_RELEASE} 系统别名已设置成功,请重新登陆后生效!"${END}
}set_alias(){if [ ${OS_ID} == "CentOS" -o ${OS_ID} == "Rocky" ];thenif grep -Eqi "(.*cdnet|.*vie0|.*vie1|.*scandisk)" ~/.bashrc;thensed -i -e '/.*cdnet/d'  -e '/.*vie0/d' -e '/.*vie1/d' -e '/.*scandisk/d' ~/.bashrcset_centos_aliaselseset_centos_aliasfifiif [ ${OS_ID} == "Ubuntu" ];thenif grep -Eqi "(.*cdnet|.*scandisk)" ~/.bashrc;thensed -i -e '/.*cdnet/d' -e '/.*scandisk/d' ~/.bashrcset_ubuntu_aliaselseset_ubuntu_aliasfifi
}set_vimrc(){read -p "请输入作者名: " AUTHORread -p "请输入QQ号: " QQread -p "请输入网址: " V_MIRRORcat >~/.vimrc <<-EOF
set ts=4
set expandtab
set ignorecase
set cursorline
set autoindent
autocmd BufNewFile *.sh exec ":call SetTitle()"
func SetTitle()if expand("%:e") == 'sh'call setline(1,"#!/bin/bash")call setline(2,"#")call setline(3,"#**********************************************************************************************")call setline(4,"#Author:        ${AUTHOR}")call setline(5,"#QQ:            ${QQ}")call setline(6,"#Date:          ".strftime("%Y-%m-%d"))call setline(7,"#FileName:      ".expand("%"))call setline(8,"#MIRROR:           ${V_MIRROR}")call setline(9,"#Description:   The test script")call setline(10,"#Copyright (C): ".strftime("%Y")." All rights reserved")call setline(11,"#*********************************************************************************************")call setline(12,"")endif
endfunc
autocmd BufNewFile * normal G
EOF${COLOR}"${OS_ID} ${OS_RELEASE} vimrc设置完成,请重新系统启动才能生效!"${END}
}set_mail(){                                                                                                 if [ ${OS_ID} == "CentOS" -o ${OS_ID} == "Rocky" ];thenrpm -q postfix &> /dev/null || { yum -y install postfix &> /dev/null; systemctl enable --now postfix &> /dev/null; }rpm -q mailx &> /dev/null || yum -y install mailx &> /dev/nullelsedpkg -s mailutils &> /dev/null || apt -y install mailutilsfiread -p "请输入邮箱地址: " MAILread -p "请输入邮箱授权码: " AUTHSMTP=`echo ${MAIL} |awk -F"@" '{print $2}'`cat >~/.mailrc <<-EOF
set from=${MAIL}
set smtp=smtp.${SMTP}
set smtp-auth-user=${MAIL}
set smtp-auth-password=${AUTH}
set smtp-auth=login
set ssl-verify=ignore
EOF${COLOR}"${OS_ID} ${OS_RELEASE} 邮件设置完成,请重新登录后才能生效!"${END}
}red(){P_COLOR=31
}green(){P_COLOR=32
}yellow(){P_COLOR=33
}blue(){P_COLOR=34
}violet(){P_COLOR=35
}cyan_blue(){P_COLOR=36
}random_color(){P_COLOR="$[RANDOM%7+31]"
}centos_ps1(){C_PS1=$(echo "PS1='\[\e[1;${P_COLOR}m\][\u@\h \W]\\$ \[\e[0m\]'" >> ~/.bashrc)
}ubuntu_ps1(){U_PS1=$(echo 'PS1="\[\e[1;'''${P_COLOR}'''m\]${debian_chroot:+($debian_chroot)}\u@\h:\w\\$ \[\e[0m\]"' >> ~/.bashrc)
}set_ps1_env(){if [ ${OS_ID} == "CentOS" -o ${OS_ID} == "Rocky" ];thenif grep -Eqi "^PS1" ~/.bashrc;thensed -i '/^PS1/d' ~/.bashrccentos_ps1elsecentos_ps1fifiif [ ${OS_ID} == "Ubuntu" ];thenif grep -Eqi "^PS1" ~/.bashrc;thensed -i '/^PS1/d' ~/.bashrcubuntu_ps1elseubuntu_ps1fifi
}set_ps1(){TIPS="${COLOR}${OS_ID} ${OS_RELEASE} PS1设置成功,请重新登录生效!${END}"while true;doecho -e "\E[$[RANDOM%7+31];1m"cat <<-EOF
1)31 红色
2)32 绿色
3)33 黄色
4)34 蓝色
5)35 紫色
6)36 青色
7)随机颜色
8)退出
EOFecho -e '\E[0m'read -p "请输入颜色编号(1-8): " NUMcase ${NUM} in1)redset_ps1_env${TIPS};;2)greenset_ps1_env${TIPS};;3)yellowset_ps1_env${TIPS};;4)blueset_ps1_env${TIPS};;5)violetset_ps1_env${TIPS};;6)cyan_blueset_ps1_env${TIPS};;7)random_colorset_ps1_env${TIPS};;8)break;;*)${COLOR}"输入错误,请输入正确的数字(1-8)!"${END};;esacdone
}set_vim(){echo "export EDITOR=vim" >> ~/.bashrc
}set_vim_env(){if grep -Eqi ".*EDITOR" ~/.bashrc;thensed -i '/.*EDITOR/d' ~/.bashrcset_vimelseset_vimfi${COLOR}"${OS_ID} ${OS_RELEASE} 默认文本编辑器设置成功,请重新登录生效!"${END}
}set_history(){echo 'export HISTTIMEFORMAT="%F %T "' >> ~/.bashrc 
}set_history_env(){if grep -Eqi ".*HISTTIMEFORMAT" ~/.bashrc;thensed -i '/.*HISTTIMEFORMAT/d' ~/.bashrcset_historyelseset_historyfi${COLOR}"${OS_ID} ${OS_RELEASE} history格式设置成功,请重新登录生效!"${END}
}disable_restart(){if [ -f /usr/lib/systemd/system/ctrl-alt-del.target ];thencp /usr/lib/systemd/system/ctrl-alt-del.target{,.bak}rm -f /usr/lib/systemd/system/ctrl-alt-del.target${COLOR}"${OS_ID} ${OS_RELEASE} 禁用ctrl+alt+del重启处理成功!"${END}else${COLOR}"${OS_ID} ${OS_RELEASE} 禁用ctrl+alt+del已处理!"${END}fi
}set_root_login(){read -p "请输入密码: " PASSWORDecho ${PASSWORD} |sudo -S sed -ri 's@#(PermitRootLogin )prohibit-password@\1yes@' /etc/ssh/sshd_configsudo systemctl restart sshdsudo -S passwd root <<-EOF
${PASSWORD}
${PASSWORD}
EOF${COLOR}"${OS_ID} ${OS_RELEASE} root用户登录已设置完成,请重新登录后生效!"${END}
}ubuntu_remove(){apt purge ufw lxd lxd-client lxcfs liblxc-common${COLOR}"${OS_ID} ${OS_RELEASE} 无用软件包卸载完成!"${END}
}menu(){while true;doecho -e "\E[$[RANDOM%7+31];1m"cat <<-EOF
********************************************************************
*                          初始化脚本菜单                          *
* 1.修改网卡名                     14.更改SSH端口号                *
* 2.修改IP地址和网关地址(单网卡)   15.设置系统别名                 *
* 3.修改IP地址和网关地址(双网卡)   16.设置vimrc配置文件            *
* 4.设置主机名                     17.安装邮件服务并配置邮件       *
* 5.设置镜像仓库                   18.设置PS1(请进入选择颜色)      *
* 6.Minimal安装建议安装软件        19.设置默认文本编辑器为vim      *
* 7.关闭防火墙                     20.设置history格式              *
* 8.禁用SELinux                    21.禁用ctrl+alt+del重启         *
* 9.禁用SWAP                       22.Ubuntu设置root用户登录       *
* 10.设置系统时区                  23.Ubuntu卸载无用软件包         *
* 11.优化资源限制参数              24.重启系统                     *
* 12.优化内核参数                  25.关机                         *
* 13.优化SSH                       26.退出                         *
********************************************************************
EOFecho -e '\E[0m'read -p "请选择相应的编号(1-26): " choicecase ${choice} in1)set_eth;;2)set_ip;;3)set_dual_ip;;4)set_hostname;;5)set_mirror_repository;;6)minimal_install;;7)disable_firewall;;8)disable_selinux;;9)set_swap;;10)set_localtime;;11)set_limits;;12)set_kernel;;13)optimization_sshd;;14)set_sshd_port;;15)set_alias;;16)set_vimrc;;17)set_mail;;18)set_ps1;;19)set_vim_env;;20)set_history_env;;21)disable_restart;;22)set_root_login;;23)ubuntu_remove;;24)reboot;;25)shutdown -h now;;26)break;;*)${COLOR}"输入错误,请输入正确的数字(1-26)!"${END};;esacdone
}main(){osmenu
}main

这篇关于Rocky、CentOS和Ubuntu系统初始化脚本v7版的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/814742

相关文章

Windows系统宽带限制如何解除?

《Windows系统宽带限制如何解除?》有不少用户反映电脑网速慢得情况,可能是宽带速度被限制的原因,只需解除限制即可,具体该如何操作呢?本文就跟大家一起来看看Windows系统解除网络限制的操作方法吧... 有不少用户反映电脑网速慢得情况,可能是宽带速度被限制的原因,只需解除限制即可,具体该如何操作呢?本文

CentOS和Ubuntu系统使用shell脚本创建用户和设置密码

《CentOS和Ubuntu系统使用shell脚本创建用户和设置密码》在Linux系统中,你可以使用useradd命令来创建新用户,使用echo和chpasswd命令来设置密码,本文写了一个shell... 在linux系统中,你可以使用useradd命令来创建新用户,使用echo和chpasswd命令来设

电脑找不到mfc90u.dll文件怎么办? 系统报错mfc90u.dll丢失修复的5种方案

《电脑找不到mfc90u.dll文件怎么办?系统报错mfc90u.dll丢失修复的5种方案》在我们日常使用电脑的过程中,可能会遇到一些软件或系统错误,其中之一就是mfc90u.dll丢失,那么,mf... 在大部分情况下出现我们运行或安装软件,游戏出现提示丢失某些DLL文件或OCX文件的原因可能是原始安装包

电脑显示mfc100u.dll丢失怎么办?系统报错mfc90u.dll丢失5种修复方案

《电脑显示mfc100u.dll丢失怎么办?系统报错mfc90u.dll丢失5种修复方案》最近有不少兄弟反映,电脑突然弹出“mfc100u.dll已加载,但找不到入口点”的错误提示,导致一些程序无法正... 在计算机使用过程中,我们经常会遇到一些错误提示,其中最常见的就是“找不到指定的模块”或“缺少某个DL

redis中使用lua脚本的原理与基本使用详解

《redis中使用lua脚本的原理与基本使用详解》在Redis中使用Lua脚本可以实现原子性操作、减少网络开销以及提高执行效率,下面小编就来和大家详细介绍一下在redis中使用lua脚本的原理... 目录Redis 执行 Lua 脚本的原理基本使用方法使用EVAL命令执行 Lua 脚本使用EVALSHA命令

Java数组初始化的五种方式

《Java数组初始化的五种方式》数组是Java中最基础且常用的数据结构之一,其初始化方式多样且各具特点,本文详细讲解Java数组初始化的五种方式,分析其适用场景、优劣势对比及注意事项,帮助避免常见陷阱... 目录1. 静态初始化:简洁但固定代码示例核心特点适用场景注意事项2. 动态初始化:灵活但需手动管理代

Java使用ANTLR4对Lua脚本语法校验详解

《Java使用ANTLR4对Lua脚本语法校验详解》ANTLR是一个强大的解析器生成器,用于读取、处理、执行或翻译结构化文本或二进制文件,下面就跟随小编一起看看Java如何使用ANTLR4对Lua脚本... 目录什么是ANTLR?第一个例子ANTLR4 的工作流程Lua脚本语法校验准备一个Lua Gramm

QT进行CSV文件初始化与读写操作

《QT进行CSV文件初始化与读写操作》这篇文章主要为大家详细介绍了在QT环境中如何进行CSV文件的初始化、写入和读取操作,本文为大家整理了相关的操作的多种方法,希望对大家有所帮助... 目录前言一、CSV文件初始化二、CSV写入三、CSV读取四、QT 逐行读取csv文件五、Qt如何将数据保存成CSV文件前言

C++中初始化二维数组的几种常见方法

《C++中初始化二维数组的几种常见方法》本文详细介绍了在C++中初始化二维数组的不同方式,包括静态初始化、循环、全部为零、部分初始化、std::array和std::vector,以及std::vec... 目录1. 静态初始化2. 使用循环初始化3. 全部初始化为零4. 部分初始化5. 使用 std::a

利用Python快速搭建Markdown笔记发布系统

《利用Python快速搭建Markdown笔记发布系统》这篇文章主要为大家详细介绍了使用Python生态的成熟工具,在30分钟内搭建一个支持Markdown渲染、分类标签、全文搜索的私有化知识发布系统... 目录引言:为什么要自建知识博客一、技术选型:极简主义开发栈二、系统架构设计三、核心代码实现(分步解析