系统初始化脚本(不同系统)

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

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

 

Shell脚本源码地址:https://gitee.com/raymond9/shell

版本功能
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卸载无用软件包。

 

[root@rocky9 ~]# cat reset_v5_1.sh#!/bin/bash##***************************************************************************************************#Author:        Raymond#QQ:            88563128#Date:          2023-01-29#FileName:      reset_v5_1.sh#URL:           raymond.blog.csdn.net#Description:   reset for CentOS 6/7/8 & CentOS Stream 8/9 & Ubuntu 18.04/20.04/22.04 & Rocky 8/9#Copyright (C): 2023 All rights reserved#**************************************************************************************************COLOR="echo -e \\033[01;31m"END='\033[0m'
os(){ if grep -Eqi "Centos" /etc/issue && [ $(sed -rn 's#^.* ([0-9]+)\..*#\1#p' /etc/redhat-release) == 6 ] ;then OS_ID=`sed -rn 's#^([[:alpha:]]+) .*#\1#p' /etc/redhat-release` OS_RELEASE=`sed -rn 's#^.* ([0-9.]+).*#\1#p' /etc/redhat-release` OS_RELEASE_VERSION=`sed -rn 's#^.* ([0-9]+)\..*#\1#p' /etc/redhat-release` else 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` fi}
disable_selinux(){ if [ ${OS_ID} == "CentOS" -o ${OS_ID} == "Rocky" ];then if [ `getenforce` == "Enforcing" ];then sed -ri.bak 's/^(SELINUX=).*/\1disabled/' /etc/selinux/config ${COLOR}"${OS_ID} ${OS_RELEASE} SELinux已禁用,请重新启动系统后才能生效!"${END} else ${COLOR}"${OS_ID} ${OS_RELEASE} SELinux已被禁用,不用设置!"${END} fi else ${COLOR}"${OS_ID} ${OS_RELEASE} SELinux默认没有安装,不用设置!"${END} fi}
disable_firewall(){ if [ ${OS_ID} == "CentOS" -o ${OS_ID} == "Rocky" ];then rpm -q firewalld &> /dev/null && { systemctl disable --now firewalld &> /dev/null; ${COLOR}"${OS_ID} ${OS_RELEASE} Firewall防火墙已关闭!"${END}; } || { service iptables stop ; chkconfig iptables off; ${COLOR}"${OS_ID} ${OS_RELEASE} iptables防火墙已关闭!"${END}; } else dpkg -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}
optimization_sshd(){ if [ ${OS_ID} == "CentOS" -o ${OS_ID} == "Rocky" ];then sed -ri.bak -e 's/^#(UseDNS).*/\1 no/' -e 's/^(GSSAPIAuthentication).*/\1 no/' /etc/ssh/sshd_config else sed -ri.bak -e 's/^#(UseDNS).*/\1 no/' -e 's/^#(GSSAPIAuthentication).*/\1 no/' /etc/ssh/sshd_config fi if [ ${OS_RELEASE_VERSION} == "6" ];then service sshd restart else systemctl restart sshd fi ${COLOR}"${OS_ID} ${OS_RELEASE} SSH已优化完成!"${END}}
set_centos_alias(){ if [ ${OS_RELEASE_VERSION} == "6" -o ${OS_RELEASE_VERSION} == "7" -o ${OS_RELEASE_VERSION} == "8" ];then cat >>~/.bashrc <<-EOFalias cdnet="cd /etc/sysconfig/network-scripts"alias vie0="vim /etc/sysconfig/network-scripts/ifcfg-eth0"alias vie1="vim /etc/sysconfig/network-scripts/ifcfg-eth1"alias scandisk="echo '- - -' > /sys/class/scsi_host/host0/scan;echo '- - -' > /sys/class/scsi_host/host1/scan;echo '- - -' > /sys/class/scsi_host/host2/scan"EOF else cat >>~/.bashrc <<-EOFalias cdnet="cd /etc/NetworkManager/system-connections"alias vie0="vim /etc/NetworkManager/system-connections/eth0.nmconnection"alias vie1="vim /etc/NetworkManager/system-connections/eth1.nmconnection"alias scandisk="echo '- - -' > /sys/class/scsi_host/host0/scan;echo '- - -' > /sys/class/scsi_host/host1/scan;echo '- - -' > /sys/class/scsi_host/host2/scan"EOF fi ${COLOR}"${OS_ID} ${OS_RELEASE} 系统别名已设置成功,请重新登陆后生效!"${END}}
set_ubuntu_alias(){ cat >>~/.bashrc <<-EOFalias cdnet="cd /etc/netplan"alias scandisk="echo '- - -' > /sys/class/scsi_host/host0/scan;echo '- - -' > /sys/class/scsi_host/host1/scan;echo '- - -' > /sys/class/scsi_host/host2/scan"EOF ${COLOR}"${OS_ID} ${OS_RELEASE} 系统别名已设置成功,请重新登陆后生效!"${END}}
set_alias(){ if [ ${OS_ID} == "CentOS" -o ${OS_ID} == "Rocky" ];then if grep -Eqi "(.*cdnet|.*vie0|.*vie1|.*scandisk)" ~/.bashrc;then sed -i -e '/.*cdnet/d' -e '/.*vie0/d' -e '/.*vie1/d' -e '/.*scandisk/d' ~/.bashrc set_centos_alias else set_centos_alias fi fi if [ ${OS_ID} == "Ubuntu" ];then if grep -Eqi "(.*cdnet|.*scandisk)" ~/.bashrc;then sed -i -e '/.*cdnet/d' -e '/.*scandisk/d' ~/.bashrc set_ubuntu_alias else set_ubuntu_alias fi fi}
set_vimrc(){ read -p "请输入作者名: " AUTHOR read -p "请输入QQ号: " QQ read -p "请输入网址: " V_URL cat >~/.vimrc <<-EOFset ts=4set expandtabset ignorecaseset cursorlineset autoindentautocmd 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,"#URL: ${V_URL}") call setline(9,"#Description: The test script") call setline(10,"#Copyright (C): ".strftime("%Y")." All rights reserved") call setline(11,"#*********************************************************************************************") call setline(12,"") endifendfuncautocmd BufNewFile * normal GEOF ${COLOR}"${OS_ID} ${OS_RELEASE} vimrc设置完成,请重新系统启动才能生效!"${END}}
aliyun(){ URL=mirrors.aliyun.com}
huawei(){ URL=repo.huaweicloud.com}
tencent(){ URL=mirrors.tencent.com}
tuna(){ URL=mirrors.tuna.tsinghua.edu.cn}
netease(){ URL=mirrors.163.com}
sohu(){ URL=mirrors.sohu.com}
nju(){ URL=mirrors.nju.edu.cn}
ustc(){ URL=mirrors.ustc.edu.cn}
sjtu(){ URL=mirrors.sjtug.sjtu.edu.cn}
fedora(){ URL=archives.fedoraproject.org}
set_yum_rocky8_9(){ sed -i.bak -e 's|^mirrorlist=|#mirrorlist=|g' -e 's|^#baseurl=http://dl.rockylinux.org/$contentdir|baseurl=https://'${URL}'/rocky|g' /etc/yum.repos.d/[Rr]ocky*.repo ${COLOR}"更新镜像源中,请稍等..."${END} dnf clean all &> /dev/null dnf makecache &> /dev/null ${COLOR}"${OS_ID} ${OS_RELEASE} YUM源设置完成!"${END}}
set_yum_rocky8_9_2(){ sed -i.bak -e 's|^mirrorlist=|#mirrorlist=|g' -e 's|^#baseurl=http://dl.rockylinux.org/$contentdir|baseurl=https://'${URL}'/rockylinux|g' /etc/yum.repos.d/[Rr]ocky*.repo ${COLOR}"更新镜像源中,请稍等..."${END} dnf clean all &> /dev/null dnf makecache &> /dev/null ${COLOR}"${OS_ID} ${OS_RELEASE} YUM源设置完成!"${END}}
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=BaseOSbaseurl=https://${URL}/centos-stream/\$stream/BaseOS/\$basearch/os/gpgcheck=1gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
[AppStream]name=AppStreambaseurl=https://${URL}/centos-stream/\$stream/AppStream/\$basearch/os/gpgcheck=1gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
[extras-common]name=extras-commonbaseurl=https://${URL}/centos-stream/SIGs/\$stream/extras/\$basearch/extras-common/gpgcheck=1gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficialEOF ${COLOR}"更新镜像源中,请稍等..."${END} dnf clean all &> /dev/null dnf makecache &> /dev/null ${COLOR}"${OS_ID} ${OS_RELEASE} YUM源设置完成!"${END}}
set_yum_centos_stream8(){ sed -i.bak -e 's|^mirrorlist=|#mirrorlist=|g' -e 's|^#baseurl=http://mirror.centos.org/$contentdir|baseurl=https://'${URL}'/centos|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}}
set_yum_centos8(){ sed -i.bak -e 's|^mirrorlist=|#mirrorlist=|g' -e 's|^#baseurl=http://mirror.centos.org/$contentdir|baseurl=https://'${URL}'/centos-vault/centos|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}}
set_epel_centos8_9(){ cat > /etc/yum.repos.d/epel.repo <<-EOF[epel]name=epelbaseurl=https://${URL}/epel/\$releasever/Everything/\$basearch/gpgcheck=1gpgkey=https://${URL}/epel/RPM-GPG-KEY-EPEL-\$releaseverEOF ${COLOR}"更新镜像源中,请稍等..."${END} dnf clean all &> /dev/null dnf makecache &> /dev/null ${COLOR}"${OS_ID} ${OS_RELEASE} EPEL源设置完成!"${END}}
set_epel_2_centos8_9(){ cat > /etc/yum.repos.d/epel.repo <<-EOF[epel]name=epelbaseurl=https://${URL}/fedora-epel/\$releasever/Everything/\$basearch/gpgcheck=1gpgkey=https://${URL}/fedora-epel/RPM-GPG-KEY-EPEL-\$releaseverEOF ${COLOR}"更新镜像源中,请稍等..."${END} dnf clean all &> /dev/null dnf makecache &> /dev/null ${COLOR}"${OS_ID} ${OS_RELEASE} EPEL源设置完成!"${END}}
set_epel_3_centos8_9(){ cat > /etc/yum.repos.d/epel.repo <<-EOF[epel]name=epelbaseurl=https://${URL}/fedora/epel/\$releasever/Everything/\$basearch/gpgcheck=1gpgkey=https://${URL}/fedora/epel/RPM-GPG-KEY-EPEL-\$releaseverEOF ${COLOR}"更新镜像源中,请稍等..."${END} dnf clean all &> /dev/null dnf makecache &> /dev/null ${COLOR}"${OS_ID} ${OS_RELEASE} EPEL源设置完成!"${END}}
set_yum_centos7(){ sed -i.bak -e 's|^mirrorlist=|#mirrorlist=|g' -e 's|^#baseurl=http://mirror.centos.org|baseurl=https://'${URL}'|g' /etc/yum.repos.d/CentOS-*.repo ${COLOR}"更新镜像源中,请稍等..."${END} yum clean all &> /dev/null yum makecache &> /dev/null ${COLOR}"${OS_ID} ${OS_RELEASE} YUM源设置完成!"${END}}
set_epel_centos7(){ cat > /etc/yum.repos.d/epel.repo <<-EOF[epel]name=epelbaseurl=https://${URL}/epel/\$releasever/\$basearch/gpgcheck=1gpgkey=https://${URL}/epel/RPM-GPG-KEY-EPEL-\$releaseverEOF ${COLOR}"更新镜像源中,请稍等..."${END} yum clean all &> /dev/null yum makecache &> /dev/null ${COLOR}"${OS_ID} ${OS_RELEASE} EPEL源设置完成!"${END}}
set_epel_2_centos7(){ cat > /etc/yum.repos.d/epel.repo <<-EOF[epel]name=epelbaseurl=https://${URL}/fedora-epel/\$releasever/\$basearch/gpgcheck=1gpgkey=https://${URL}/fedora-epel/RPM-GPG-KEY-EPEL-\$releaseverEOF ${COLOR}"更新镜像源中,请稍等..."${END} yum clean all &> /dev/null yum makecache &> /dev/null ${COLOR}"${OS_ID} ${OS_RELEASE} EPEL源设置完成!"${END}}
set_epel_3_centos7(){ cat > /etc/yum.repos.d/epel.repo <<-EOF[epel]name=epelbaseurl=https://${URL}/fedora/epel/\$releasever/\$basearch/gpgcheck=1gpgkey=https://${URL}/fedora/epel/RPM-GPG-KEY-EPEL-\$releaseverEOF ${COLOR}"更新镜像源中,请稍等..."${END} yum clean all &> /dev/null yum makecache &> /dev/null ${COLOR}"${OS_ID} ${OS_RELEASE} EPEL源设置完成!"${END}}
set_yum_centos6(){ sed -i.bak -e 's|^mirrorlist=|#mirrorlist=|g' -e 's|^#baseurl=http://mirror.centos.org|baseurl=https://'${URL}'/centos-vault|g' /etc/yum.repos.d/CentOS-*.repo ${COLOR}"更新镜像源中,请稍等..."${END} yum clean all &> /dev/null yum makecache &> /dev/null ${COLOR}"${OS_ID} ${OS_RELEASE} YUM源设置完成!"${END}}
set_epel_centos6(){ cat > /etc/yum.repos.d/epel.repo <<-EOF[epel]name=epelbaseurl=https://${URL}/epel/\$releasever/\$basearch/gpgcheck=1gpgkey=https://${URL}/epel/RPM-GPG-KEY-EPEL-\$releaseverEOF ${COLOR}"更新镜像源中,请稍等..."${END} yum clean all &> /dev/null yum makecache &> /dev/null ${COLOR}"${OS_ID} ${OS_RELEASE} EPEL源设置完成!"${END}}
set_epel_2_centos6(){ cat > /etc/yum.repos.d/epel.repo <<-EOF[epel]name=epelbaseurl=https://${URL}/pub/archive/epel/\$releasever/\$basearch/gpgcheck=1gpgkey=https://$(tencent)/epel/RPM-GPG-KEY-EPEL-\$releaseverEOF ${COLOR}"更新镜像源中,请稍等..."${END} yum clean all &> /dev/null yum makecache &> /dev/null ${COLOR}"${OS_ID} ${OS_RELEASE} EPEL源设置完成!"${END}}
rocky8_9_base_menu(){ while true;do echo -e "\E[$[RANDOM%7+31];1m" cat <<-EOF1)阿里镜像源2)网易镜像源3)搜狐镜像源4)南京大学镜像源5)中科大镜像源6)上海交通大学镜像源7)退出EOF echo -e '\E[0m'
read -p "请输入镜像源编号(1-7): " NUM case ${NUM} in 1) aliyun set_yum_rocky8_9_2 ;; 2) netease set_yum_rocky8_9 ;; 3) sohu set_yum_rocky8_9 ;; 4) nju set_yum_rocky8_9 ;; 5) ustc set_yum_rocky8_9 ;; 6) sjtu set_yum_rocky8_9 ;; 7) break ;; *) ${COLOR}"输入错误,请输入正确的数字(1-7)!"${END} ;; esac done}
centos_stream9_base_menu(){ while true;do echo -e "\E[$[RANDOM%7+31];1m" cat <<-EOF1)阿里镜像源2)清华镜像源3)南京大学镜像源4)中科大镜像源5)退出EOF echo -e '\E[0m'
read -p "请输入镜像源编号(1-5): " NUM case ${NUM} in 1) aliyun set_yum_centos_stream9 ;; 2) tuna set_yum_centos_stream9 ;; 3) nju set_yum_centos_stream9 ;; 4) ustc set_yum_centos_stream9 ;; 5) break ;; *) ${COLOR}"输入错误,请输入正确的数字(1-5)!"${END} ;; esac done}
centos_stream8_base_menu(){ while true;do echo -e "\E[$[RANDOM%7+31];1m" cat <<-EOF1)阿里镜像源2)华为镜像源3)腾讯镜像源4)清华镜像源5)网易镜像源6)南京大学镜像源7)中科大镜像源8)退出EOF echo -e '\E[0m'
read -p "请输入镜像源编号(1-8): " NUM case ${NUM} in 1) aliyun set_yum_centos_stream8 ;; 2) huawei set_yum_centos_stream8 ;; 3) tencent set_yum_centos_stream8 ;; 4) tuna set_yum_centos_stream8 ;; 5) netease set_yum_centos_stream8 ;; 6) nju set_yum_centos_stream8 ;; 7) ustc set_yum_centos_stream8 ;; 8) break ;; *) ${COLOR}"输入错误,请输入正确的数字(1-8)!"${END} ;; esac done}
centos8_base_menu(){ while true;do echo -e "\E[$[RANDOM%7+31];1m" cat <<-EOF1)阿里镜像源2)腾讯镜像源3)清华镜像源4)网易镜像源5)南京大学镜像源6)中科大镜像源7)退出EOF echo -e '\E[0m'
read -p "请输入镜像源编号(1-7): " NUM case ${NUM} in 1) aliyun set_yum_centos8 ;; 2) tencent set_yum_centos8 ;; 3) tuna set_yum_centos8 ;; 4) netease set_yum_centos8 ;; 5) nju set_yum_centos8 ;; 6) ustc set_yum_centos8 ;; 7) break ;; *) ${COLOR}"输入错误,请输入正确的数字(1-7)!"${END} ;; esac done}
centos7_base_menu(){ while true;do echo -e "\E[$[RANDOM%7+31];1m" cat <<-EOF1)阿里镜像源2)华为镜像源3)腾讯镜像源4)清华镜像源5)网易镜像源6)南京大学镜像源7)中科大镜像源8)退出EOF echo -e '\E[0m'
read -p "请输入镜像源编号(1-8): " NUM case ${NUM} in 1) aliyun set_yum_centos7 ;; 2) huawei set_yum_centos7 ;; 3) tencent set_yum_centos7 ;; 4) tuna set_yum_centos7 ;; 5) netease set_yum_centos7 ;; 6) nju set_yum_centos7 ;; 7) ustc set_yum_centos7 ;; 8) break ;; *) ${COLOR}"输入错误,请输入正确的数字(1-8)!"${END} ;; esac done}
centos6_base_menu(){ while true;do echo -e "\E[$[RANDOM%7+31];1m" cat <<-EOF1)阿里镜像源2)华为镜像源3)腾讯镜像源4)清华镜像源5)网易镜像源6)南京大学镜像源7)中科大镜像源8)退出EOF echo -e '\E[0m'
read -p "请输入镜像源编号(1-8): " NUM case ${NUM} in 1) aliyun set_yum_centos6 ;; 2) huawei set_yum_centos6 ;; 3) tencent set_yum_centos6 ;; 4) tuna set_yum_centos6 ;; 5) netease set_yum_centos6 ;; 6) nju set_yum_centos6 ;; 7) ustc set_yum_centos6 ;; 8) break ;; *) ${COLOR}"输入错误,请输入正确的数字(1-8)!"${END} ;; esac done}
centos8_9_epel_menu(){ while true;do echo -e "\E[$[RANDOM%7+31];1m" cat <<-EOF1)阿里镜像源2)华为镜像源3)腾讯镜像源4)清华镜像源5)搜狐镜像源6)南京大学镜像源7)中科大镜像源8)上海交通大学镜像源9)退出EOF echo -e '\E[0m'
read -p "请输入镜像源编号(1-9): " NUM case ${NUM} in 1) aliyun set_epel_centos8_9 ;; 2) huawei set_epel_centos8_9 ;; 3) tencent set_epel_centos8_9 ;; 4) tuna set_epel_centos8_9 ;; 5) sohu set_epel_2_centos8_9 ;; 6) nju set_epel_centos8_9 ;; 7) ustc set_epel_centos8_9 ;; 8) sjtu set_epel_3_centos8_9 ;; 9) break ;; *) ${COLOR}"输入错误,请输入正确的数字(1-9)!"${END} ;; esac done}
centos7_epel_menu(){ while true;do echo -e "\E[$[RANDOM%7+31];1m" cat <<-EOF1)阿里镜像源2)华为镜像源3)腾讯镜像源4)清华镜像源5)搜狐镜像源6)南京大学镜像源7)中科大镜像源8)上海交通大学镜像源9)退出EOF echo -e '\E[0m'
read -p "请输入镜像源编号(1-9): " NUM case ${NUM} in 1) aliyun set_epel_centos7 ;; 2) huawei set_epel_centos7 ;; 3) tencent set_epel_centos7 ;; 4) tuna set_epel_centos7 ;; 5) sohu set_epel_2_centos7 ;; 6) nju set_epel_centos7 ;; 7) ustc set_epel_centos7 ;; 8) sjtu set_epel_3_centos7 ;; 9) break ;; *) ${COLOR}"输入错误,请输入正确的数字(1-9)!"${END} ;; esac done}
centos6_epel_menu(){ while true;do echo -e "\E[$[RANDOM%7+31];1m" cat <<-EOF1)腾讯镜像源2)Fedora镜像源3)退出EOF echo -e '\E[0m'
read -p "请输入镜像源编号(1-3): " NUM case ${NUM} in 1) tencent set_epel_centos6 ;; 2) fedora set_epel_2_centos6 ;; 3) break ;; *) ${COLOR}"输入错误,请输入正确的数字(1-3)!"${END} ;; esac done}
rocky_menu(){ while true;do echo -e "\E[$[RANDOM%7+31];1m" cat <<-EOF1)base仓库2)epel仓库3)退出EOF echo -e '\E[0m'
read -p "请输入镜像源编号(1-3): " NUM case ${NUM} in 1) rocky8_9_base_menu ;; 2) centos8_9_epel_menu ;; 3) break ;; *) ${COLOR}"输入错误,请输入正确的数字(1-3)!"${END} ;; esac done}
centos_menu(){ while true;do echo -e "\E[$[RANDOM%7+31];1m" cat <<-EOF1)base仓库2)epel仓库3)退出EOF echo -e '\E[0m'
read -p "请输入镜像源编号(1-3): " NUM case ${NUM} in 1) if [ ${OS_RELEASE_VERSION} == "6" ];then centos6_base_menu elif [ ${OS_NAME} == "Stream" ];then if [ ${OS_RELEASE_VERSION} == "8" ];then centos_stream8_base_menu else centos_stream9_base_menu fi elif [ ${OS_RELEASE_VERSION} == "8" -a ${OS_NAME} == "Linux" ];then centos8_base_menu else centos7_base_menu fi ;; 2) if [ ${OS_RELEASE_VERSION} == "8" -o ${OS_RELEASE_VERSION} == "9" ];then centos8_9_epel_menu elif [ ${OS_RELEASE_VERSION} == "7" ];then centos7_epel_menu else centos6_epel_menu fi ;; 3) break ;; *) ${COLOR}"输入错误,请输入正确的数字(1-3)!"${END} ;; esac done}
set_apt(){ mv /etc/apt/sources.list /etc/apt/sources.list.bak cat > /etc/apt/sources.list <<-EOFdeb http://${URL}/ubuntu/ $(lsb_release -cs) main restricted universe multiversedeb-src http://${URL}/ubuntu/ $(lsb_release -cs) main restricted universe multiverse
deb http://${URL}/ubuntu/ $(lsb_release -cs)-security main restricted universe multiversedeb-src http://${URL}/ubuntu/ $(lsb_release -cs)-security main restricted universe multiverse
deb http://${URL}/ubuntu/ $(lsb_release -cs)-updates main restricted universe multiversedeb-src http://${URL}/ubuntu/ $(lsb_release -cs)-updates main restricted universe multiverse
deb http://${URL}/ubuntu/ $(lsb_release -cs)-proposed main restricted universe multiversedeb-src http://${URL}/ubuntu/ $(lsb_release -cs)-proposed main restricted universe multiverse
deb http://${URL}/ubuntu/ $(lsb_release -cs)-backports main restricted universe multiversedeb-src http://${URL}/ubuntu/ $(lsb_release -cs)-backports main restricted universe multiverseEOF ${COLOR}"更新镜像源中,请稍等..."${END} apt update &> /dev/null ${COLOR}"${OS_ID} ${OS_RELEASE} APT源设置完成!"${END}}
apt_menu(){ while true;do echo -e "\E[$[RANDOM%7+31];1m" cat <<-EOF1)阿里镜像源2)华为镜像源3)腾讯镜像源4)清华镜像源5)网易镜像源6)南京大学镜像源7)中科大镜像源8)上海交通大学镜像源9)退出EOF echo -e '\E[0m'
read -p "请输入镜像源编号(1-9): " NUM case ${NUM} in 1) aliyun set_apt ;; 2) huawei set_apt ;; 3) tencent set_apt ;; 4) tuna set_apt ;; 5) netease set_apt ;; 6) nju set_apt ;; 7) ustc set_apt ;; 8) sjtu set_apt ;; 9) break ;; *) ${COLOR}"输入错误,请输入正确的数字(1-9)!"${END} ;; esac done}
set_mirror_repository(){ if [ ${OS_ID} == "CentOS" ];then centos_menu elif [ ${OS_ID} == "Rocky" ];then rocky_menu else apt_menu fi}
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;then centos_minimal_install else ubuntu_minimal_install fi}
set_mail(){ if [ ${OS_ID} == "CentOS" -o ${OS_ID} == "Rocky" ];then rpm -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/null else dpkg -s mailutils &> /dev/null || apt -y install mailutils fi read -p "请输入邮箱地址: " MAIL read -p "请输入邮箱授权码: " AUTH SMTP=`echo ${MAIL} |awk -F"@" '{print $2}'` cat >~/.mailrc <<-EOFset from=${MAIL}set smtp=smtp.${SMTP}set smtp-auth-user=${MAIL}set smtp-auth-password=${AUTH}set smtp-auth=loginset ssl-verify=ignoreEOF ${COLOR}"${OS_ID} ${OS_RELEASE} 邮件设置完成,请重新登录后才能生效!"${END}}
set_sshd_port(){ disable_selinux disable_firewall read -p "请输入端口号: " PORT sed -i 's/#Port 22/Port '${PORT}'/' /etc/ssh/sshd_config ${COLOR}"${OS_ID} ${OS_RELEASE} 更改SSH端口号已完成,请重启系统后生效!"${END}}
set_centos_eth(){ #修改网卡名称配置文件 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/grub grub2-mkconfig -o /boot/grub2/grub.cfg >& /dev/null ${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} else sed -ri.bak '/^GRUB_CMDLINE_LINUX=/s@"$@net.ifnames=0 biosdevname=0"@' /etc/default/grub grub-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" ];then if [ ${OS_RELEASE_VERSION} == "6" ];then ${COLOR}"${OS_ID} ${OS_RELEASE} 不用修改网卡名"${END} else set_centos_eth fi else set_ubuntu_eth fi}
check_ip(){ local IP=$1 VALID_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; then if [ ${VALID_CHECK} == "yes" ]; then echo "IP ${IP} available!" return 0 else echo "IP ${IP} not available!" return 1 fi else echo "IP format error!" return 1 fi}
set_centos_ip(){ ETHNAME=`ip addr | awk -F"[ :]" '/^2/{print $3}'` while true; do read -p "请输入IP地址: " IP check_ip ${IP} [ $? -eq 0 ] && break done read -p "请输入子网掩码位数: " C_PREFIX while true; do read -p "请输入网关地址: " GATEWAY check_ip ${GATEWAY} [ $? -eq 0 ] && break done nmcli connection add type ethernet con-name eth0 ifname eth0 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 ${COLOR}"${OS_ID} ${OS_RELEASE} IP地址、网关地址和DNS已修改成功,10秒后,机器会自动重启!"${END} sleep 10 nmcli connection delete ${ETHNAME} >& /dev/null reboot}
set_centos_6_ip(){ while true; do read -p "请输入IP地址: " IP check_ip ${IP} [ $? -eq 0 ] && break done read -p "请输入子网掩码位数: " C_PREFIX while true; do read -p "请输入网关地址: " GATEWAY check_ip ${GATEWAY} [ $? -eq 0 ] && break done cat > /etc/sysconfig/network-scripts/ifcfg-eth0 <<-EOFNAME=eth0DEVICE=eth0ONBOOT=yesBOOTPROTO=noneTYPE=EthernetIPADDR=${IP}PREFIX=${C_PREFIX}GATEWAY=${GATEWAY}DNS1=223.5.5.5DNS2=180.76.76.76EOF ${COLOR}"${OS_ID} ${OS_RELEASE} IP地址、网关地址和DNS已修改成功,请重新启动系统后生效!"${END}}
set_ubuntu_ip(){ while true; do read -p "请输入IP地址: " IP check_ip ${IP} [ $? -eq 0 ] && break done read -p "请输入子网掩码位数: " U_PREFIX while true; do read -p "请输入网关地址: " GATEWAY check_ip ${GATEWAY} [ $? -eq 0 ] && break done cat > /etc/netplan/01-netcfg.yaml <<-EOFnetwork: version: 2 renderer: networkd ethernets: eth0: dhcp4: no dhcp6: no addresses: [${IP}/${U_PREFIX}] gateway4: ${GATEWAY} nameservers: addresses: [223.5.5.5, 180.76.76.76]EOF ${COLOR}"${OS_ID} ${OS_RELEASE} IP地址、网关地址和DNS已修改成功,请重新启动系统后生效!"${END}}
set_ubuntu_22_ip(){ while true; do read -p "请输入IP地址: " IP check_ip ${IP} [ $? -eq 0 ] && break done read -p "请输入子网掩码位数: " U_PREFIX while true; do read -p "请输入网关地址: " GATEWAY check_ip ${GATEWAY} [ $? -eq 0 ] && break done cat > /etc/netplan/00-installer-config.yaml <<-EOFnetwork: version: 2 renderer: networkd ethernets: eth0: dhcp4: no dhcp6: no addresses: [${IP}/${U_PREFIX}] routes: - to: default via: ${GATEWAY} nameservers: addresses: [223.5.5.5, 180.76.76.76]EOF ${COLOR}"${OS_ID} ${OS_RELEASE} IP地址、网关地址和DNS已修改成功,请重新启动系统后生效!"${END}}
set_ip(){ if [ ${OS_ID} == "CentOS" -o ${OS_ID} == "Rocky" ];then if [ ${OS_RELEASE_VERSION} == "6" ];then set_centos_6_ip else set_centos_ip fi elif [ ${OS_RELEASE_VERSION} == "18" -o ${OS_RELEASE_VERSION} == "20" ];then set_ubuntu_ip else set_ubuntu_22_ip fi}
set_dual_centos_ip(){ ETHNAME=`ip addr | awk -F"[ :]" '/^2/{print $3}'` ETHNAME2=`ip addr | awk -F"[ :]" '/^3/{print $3}'` while true; do read -p "请输入第一块网卡IP地址: " IP check_ip ${IP} [ $? -eq 0 ] && break done read -p "请输入子网掩码位数: " C_PREFIX while true; do read -p "请输入网关地址: " GATEWAY check_ip ${GATEWAY} [ $? -eq 0 ] && break done nmcli connection add type ethernet con-name eth0 ifname eth0 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 while true; do read -p "请输入第二块网卡IP地址: " IP2 check_ip ${IP2} [ $? -eq 0 ] && break done read -p "请输入子网掩码位数: " C_PREFIX2 nmcli connection add type ethernet con-name eth1 ifname eth1 ipv4.method manual ipv4.address "${IP2}/${C_PREFIX2}" autoconnect yes >& /dev/null ${COLOR}"${OS_ID} ${OS_RELEASE} IP地址、网关地址和DNS已修改成功,10秒后,机器会自动重启!"${END} sleep 10 nmcli connection delete ${ETHNAME} >& /dev/null; nmcli connection delete ${ETHNAME2} >& /dev/null reboot}
set_dual_centos_6_ip(){ while true; do read -p "请输入第一块网卡IP地址: " IP check_ip ${IP} [ $? -eq 0 ] && break done read -p "请输入子网掩码位数: " C_PREFIX while true; do read -p "请输入网关地址: " GATEWAY check_ip ${GATEWAY} [ $? -eq 0 ] && break done cat > /etc/sysconfig/network-scripts/ifcfg-eth0 <<-EOFNAME=eth0DEVICE=eth0ONBOOT=yesBOOTPROTO=noneTYPE=EthernetIPADDR=${IP}PREFIX=${C_PREFIX}GATEWAY=${GATEWAY}DNS1=223.5.5.5DNS2=180.76.76.76EOF while true; do read -p "请输入第二块网卡IP地址: " IP2 check_ip ${IP2} [ $? -eq 0 ] && break done read -p "请输入子网掩码位数: " C_PREFIX2 cat > /etc/sysconfig/network-scripts/ifcfg-eth1 <<-EOFNAME=eth1DEVICE=eth1ONBOOT=yesBOOTPROTO=noneTYPE=EthernetIPADDR=${IP2}PREFIX=${C_PREFIX2}EOF ${COLOR}"${OS_ID} ${OS_RELEASE} IP地址、网关地址和DNS已修改成功,请重新启动系统后生效!"${END}}
set_dual_ubuntu_ip(){ while true; do read -p "请输入第一块网卡IP地址: " IP check_ip ${IP} [ $? -eq 0 ] && break done read -p "请输入子网掩码位数: " U_PREFIX while true; do read -p "请输入网关地址: " GATEWAY check_ip ${GATEWAY} [ $? -eq 0 ] && break done while true; do read -p "请输入第二块网卡IP地址: " IP2 check_ip ${IP2} [ $? -eq 0 ] && break done read -p "请输入子网掩码位数: " U_PREFIX2 cat > /etc/netplan/01-netcfg.yaml <<-EOFnetwork: version: 2 renderer: networkd ethernets: eth0: dhcp4: no dhcp6: no addresses: [${IP}/${U_PREFIX}] gateway4: ${GATEWAY} nameservers: addresses: [223.5.5.5, 180.76.76.76] eth1: dhcp4: no dhcp6: no addresses: [${IP2}/${U_PREFIX2}] EOF ${COLOR}"${OS_ID} ${OS_RELEASE} IP地址、网关地址和DNS已修改成功,请重新启动系统后生效!"${END}}
set_dual_ubuntu_22_ip(){ while true; do read -p "请输入第一块网卡IP地址: " IP check_ip ${IP} [ $? -eq 0 ] && break done read -p "请输入子网掩码位数: " U_PREFIX while true; do read -p "请输入网关地址: " GATEWAY check_ip ${GATEWAY} [ $? -eq 0 ] && break done while true; do read -p "请输入第二块网卡IP地址: " IP2 check_ip ${IP2} [ $? -eq 0 ] && break done read -p "请输入子网掩码位数: " U_PREFIX2 cat > /etc/netplan/00-installer-config.yaml <<-EOFnetwork: version: 2 renderer: networkd ethernets: eth0: dhcp4: no dhcp6: no addresses: [${IP}/${U_PREFIX}] routes: - to: default via: ${GATEWAY} nameservers: addresses: [223.5.5.5, 180.76.76.76] eth1: dhcp4: no dhcp6: no addresses: [${IP2}/${U_PREFIX2}] EOF ${COLOR}"${OS_ID} ${OS_RELEASE} IP地址、网关地址和DNS已修改成功,请重新启动系统后生效!"${END}}
set_dual_ip(){ if [ ${OS_ID} == "CentOS" -o ${OS_ID} == "Rocky" ];then if [ ${OS_RELEASE_VERSION} == "6" ];then set_dual_centos_6_ip else set_dual_centos_ip fi elif [ ${OS_RELEASE_VERSION} == "18" -o ${OS_RELEASE_VERSION} == "20" ];then set_dual_ubuntu_ip else set_dual_ubuntu_22_ip fi}
set_hostname_all(){ read -p "请输入主机名: " HOST hostnamectl set-hostname ${HOST} ${COLOR}"${OS_ID} ${OS_RELEASE} 主机名设置成功,请重新登录生效!"${END}}
set_hostname6(){ read -p "请输入主机名: " HOST sed -i.bak -r '/^HOSTNAME/s#^(HOSTNAME=).*#\1'${HOST}'#' /etc/sysconfig/network ${COLOR}"${OS_ID} ${OS_RELEASE} 主机名设置成功,请重新登录生效!"${END}}
set_hostname(){ if [ ${OS_RELEASE_VERSION} == 6 ];then set_hostname6 else set_hostname_all fi}
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" ];then if grep -Eqi "^PS1" ~/.bashrc;then sed -i '/^PS1/d' ~/.bashrc centos_ps1 else centos_ps1 fi fi if [ ${OS_ID} == "Ubuntu" ];then if grep -Eqi "^PS1" ~/.bashrc;then sed -i '/^PS1/d' ~/.bashrc ubuntu_ps1 else ubuntu_ps1 fi fi}
set_ps1(){ TIPS="${COLOR}${OS_ID} ${OS_RELEASE} PS1设置成功,请重新登录生效!${END}" while true;do echo -e "\E[$[RANDOM%7+31];1m" cat <<-EOF1)31 红色2)32 绿色3)33 黄色4)34 蓝色5)35 紫色6)36 青色7)随机颜色8)退出EOF echo -e '\E[0m'
read -p "请输入颜色编号(1-8): " NUM case ${NUM} in 1) red set_ps1_env ${TIPS} ;; 2) green set_ps1_env ${TIPS} ;; 3) yellow set_ps1_env ${TIPS} ;; 4) blue set_ps1_env ${TIPS} ;; 5) violet set_ps1_env ${TIPS} ;; 6) cyan_blue set_ps1_env ${TIPS} ;; 7) random_color set_ps1_env ${TIPS} ;; 8) break ;; *) ${COLOR}"输入错误,请输入正确的数字(1-8)!"${END} ;; esac done}
set_vim(){ echo "export EDITOR=vim" >> ~/.bashrc}
set_vim_env(){ if grep -Eqi ".*EDITOR" ~/.bashrc;then sed -i '/.*EDITOR/d' ~/.bashrc set_vim else set_vim fi ${COLOR}"${OS_ID} ${OS_RELEASE} 默认文本编辑器设置成功,请重新登录生效!"${END}}
set_history(){ echo 'export HISTTIMEFORMAT="%F %T "' >> ~/.bashrc }
set_history_env(){ if grep -Eqi ".*HISTTIMEFORMAT" ~/.bashrc;then sed -i '/.*HISTTIMEFORMAT/d' ~/.bashrc set_history else set_history fi ${COLOR}"${OS_ID} ${OS_RELEASE} history格式设置成功,请重新登录生效!"${END}}
set_swap(){ sed -ri 's/.*swap.*/#&/' /etc/fstab if [ ${OS_ID} == "Ubuntu" ];then if [ ${OS_RELEASE_VERSION} == 20 -o ${OS_RELEASE_VERSION} == 22 ];then SD_NAME=`lsblk|awk -F"[ └─]" '/SWAP/{printf $3}'` systemctl mask dev-${SD_NAME}.swap &> /dev/null fi fi swapoff -a ${COLOR}"${OS_ID} ${OS_RELEASE} 禁用swap成功!"${END}}
set_kernel(){ cat > /etc/sysctl.conf <<-EOF# Controls source route verificationnet.ipv4.conf.default.rp_filter = 1net.ipv4.ip_nonlocal_bind = 1net.ipv4.ip_forward = 1
# Do not accept source routingnet.ipv4.conf.default.accept_source_route = 0
# Controls the System Request debugging functionality of the kernelkernel.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 syncookiesnet.ipv4.tcp_syncookies = 1
# Disable netfilter on bridges.net.bridge.bridge-nf-call-ip6tables = 0net.bridge.bridge-nf-call-iptables = 0net.bridge.bridge-nf-call-arptables = 0
# Controls the default maxmimum size of a mesage queuekernel.msgmnb = 65536
# Controls the maximum size of a message, in byteskernel.msgmax = 65536
# Controls the maximum shared segment size, in byteskernel.shmmax = 68719476736
# Controls the maximum number of shared memory segments, in pageskernel.shmall = 4294967296
# TCP kernel paramaternet.ipv4.tcp_mem = 786432 1048576 1572864net.ipv4.tcp_rmem = 4096 87380 4194304net.ipv4.tcp_wmem = 4096 16384 4194304net.ipv4.tcp_window_scaling = 1net.ipv4.tcp_sack = 1
# socket buffernet.core.wmem_default = 8388608net.core.rmem_default = 8388608net.core.rmem_max = 16777216net.core.wmem_max = 16777216net.core.netdev_max_backlog = 262144net.core.somaxconn = 20480net.core.optmem_max = 81920
# TCP connnet.ipv4.tcp_max_syn_backlog = 262144net.ipv4.tcp_syn_retries = 3net.ipv4.tcp_retries1 = 3net.ipv4.tcp_retries2 = 15
# tcp conn reusenet.ipv4.tcp_tw_reuse = 1net.ipv4.tcp_tw_recycle = 0net.ipv4.tcp_fin_timeout = 30net.ipv4.tcp_timestamps = 0
net.ipv4.tcp_max_tw_buckets = 20000net.ipv4.tcp_max_orphans = 3276800net.ipv4.tcp_synack_retries = 1net.ipv4.tcp_syncookies = 1
# keepalive connnet.ipv4.tcp_keepalive_time = 300net.ipv4.tcp_keepalive_intvl = 30net.ipv4.tcp_keepalive_probes = 3net.ipv4.ip_local_port_range = 10001 65000
# swapvm.overcommit_memory = 0vm.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 = 2EOF sysctl -p &> /dev/null ${COLOR}"${OS_ID} ${OS_RELEASE} 优化内核参数成功!"${END}}
set_limits(){ cat >> /etc/security/limits.conf <<-EOFroot soft core unlimitedroot hard core unlimitedroot soft nproc 1000000root hard nproc 1000000root soft nofile 1000000root hard nofile 1000000root soft memlock 32000root hard memlock 32000root soft msgqueue 8192000root hard msgqueue 8192000EOF ${COLOR}"${OS_ID} ${OS_RELEASE} 优化资源限制参数成功!"${END}}
set_localtime(){ ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime echo 'Asia/Shanghai' >/etc/timezone if [ ${OS_ID} == "Ubuntu" ];then cat >> /etc/default/locale <<-EOFLC_TIME=en_DK.UTF-8EOF fi ${COLOR}"${OS_ID} ${OS_RELEASE} 系统时区已设置成功,请重启系统后生效!"${END}}
disable_restart(){ if [ -f /usr/lib/systemd/system/ctrl-alt-del.target ];then cp /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 "请输入密码: " PASSWORD echo ${PASSWORD} |sudo -S sed -ri 's@#(PermitRootLogin )prohibit-password@\1yes@' /etc/ssh/sshd_config sudo systemctl restart sshd sudo -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;do echo -e "\E[$[RANDOM%7+31];1m" cat <<-EOF********************************************************************* 初始化脚本菜单 ** 1.禁用SELinux 15.设置PS1(请进入选择颜色) ** 2.关闭防火墙 16.设置默认文本编辑器为vim ** 3.优化SSH 17.设置history格式 ** 4.设置系统别名 18.禁用SWAP ** 5.1-4全设置 19.优化内核参数 ** 6.设置vimrc配置文件 20.优化资源限制参数 ** 7.设置镜像仓库 21.设置系统时区 ** 8.Minimal安装建议安装软件 22.禁用ctrl+alt+del重启 ** 9.安装邮件服务并配置邮件 23.Ubuntu设置root用户登录 ** 10.更改SSH端口号 24.Ubuntu卸载无用软件包 ** 11.修改网卡名 25.重启系统 ** 12.修改IP地址和网关地址(单网卡) 26.关机 ** 13.修改IP地址和网关地址(双网卡) 27.退出 ** 14.设置主机名 *********************************************************************EOF echo -e '\E[0m'
read -p "请选择相应的编号(1-27): " choice case ${choice} in 1) disable_selinux ;; 2) disable_firewall ;; 3) optimization_sshd ;; 4) set_alias ;; 5) disable_selinux disable_firewall optimization_sshd set_alias ;; 6) set_vimrc ;; 7) set_mirror_repository ;; 8) minimal_install ;; 9) set_mail ;; 10) set_sshd_port ;; 11) set_eth ;; 12) set_ip ;; 13) set_dual_ip ;; 14) set_hostname ;; 15) set_ps1 ;; 16) set_vim_env ;; 17) set_history_env ;; 18) set_swap ;; 19) set_kernel ;; 20) set_limits ;; 21) set_localtime ;; 22) disable_restart ;; 23) set_root_login ;; 24) ubuntu_remove ;; 25) reboot ;; 26) shutdown -h now ;; 27) break ;; *) ${COLOR}"输入错误,请输入正确的数字(1-27)!"${END} ;; esac done}
main(){ os menu}
main

 

[root@rocky9 ~]# cat reset_v5_2.sh#!/bin/bash##***************************************************************************************************#Author:        Raymond#QQ:            88563128#Date:          2023-01-29#FileName:      reset_v5_2.sh#URL:           raymond.blog.csdn.net#Description:   reset for CentOS 6/7/8 & CentOS Stream 8/9 & Ubuntu 18.04/20.04/22.04 & Rocky 8/9#Copyright (C): 2023 All rights reserved#**************************************************************************************************COLOR="echo -e \\033[01;31m"END='\033[0m'
os(){ if grep -Eqi "Centos" /etc/issue && [ $(sed -rn 's#^.* ([0-9]+)\..*#\1#p' /etc/redhat-release) == 6 ] ;then OS_ID=`sed -rn 's#^([[:alpha:]]+) .*#\1#p' /etc/redhat-release` OS_RELEASE=`sed -rn 's#^.* ([0-9.]+).*#\1#p' /etc/redhat-release` OS_RELEASE_VERSION=`sed -rn 's#^.* ([0-9]+)\..*#\1#p' /etc/redhat-release` else 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` fi}
disable_selinux(){ if [ ${OS_ID} == "CentOS" -o ${OS_ID} == "Rocky" ];then if [ `getenforce` == "Enforcing" ];then sed -ri.bak 's/^(SELINUX=).*/\1disabled/' /etc/selinux/config ${COLOR}"${OS_ID} ${OS_RELEASE} SELinux已禁用,请重新启动系统后才能生效!"${END} else ${COLOR}"${OS_ID} ${OS_RELEASE} SELinux已被禁用,不用设置!"${END} fi else ${COLOR}"${OS_ID} ${OS_RELEASE} SELinux默认没有安装,不用设置!"${END} fi}
disable_firewall(){ if [ ${OS_ID} == "CentOS" -o ${OS_ID} == "Rocky" ];then rpm -q firewalld &> /dev/null && { systemctl disable --now firewalld &> /dev/null; ${COLOR}"${OS_ID} ${OS_RELEASE} Firewall防火墙已关闭!"${END}; } || { service iptables stop ; chkconfig iptables off; ${COLOR}"${OS_ID} ${OS_RELEASE} iptables防火墙已关闭!"${END}; } else dpkg -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}
optimization_sshd(){ if [ ${OS_ID} == "CentOS" -o ${OS_ID} == "Rocky" ];then sed -ri.bak -e 's/^#(UseDNS).*/\1 no/' -e 's/^(GSSAPIAuthentication).*/\1 no/' /etc/ssh/sshd_config else sed -ri.bak -e 's/^#(UseDNS).*/\1 no/' -e 's/^#(GSSAPIAuthentication).*/\1 no/' /etc/ssh/sshd_config fi if [ ${OS_RELEASE_VERSION} == "6" ];then service sshd restart else systemctl restart sshd fi ${COLOR}"${OS_ID} ${OS_RELEASE} SSH已优化完成!"${END}}
set_centos_alias(){ if [ ${OS_RELEASE_VERSION} == "6" -o ${OS_RELEASE_VERSION} == "7" -o ${OS_RELEASE_VERSION} == "8" ];then cat >>~/.bashrc <<-EOFalias cdnet="cd /etc/sysconfig/network-scripts"alias vie0="vim /etc/sysconfig/network-scripts/ifcfg-eth0"alias vie1="vim /etc/sysconfig/network-scripts/ifcfg-eth1"alias scandisk="echo '- - -' > /sys/class/scsi_host/host0/scan;echo '- - -' > /sys/class/scsi_host/host1/scan;echo '- - -' > /sys/class/scsi_host/host2/scan"EOF else cat >>~/.bashrc <<-EOFalias cdnet="cd /etc/NetworkManager/system-connections"alias vie0="vim /etc/NetworkManager/system-connections/eth0.nmconnection"alias vie1="vim /etc/NetworkManager/system-connections/eth1.nmconnection"alias scandisk="echo '- - -' > /sys/class/scsi_host/host0/scan;echo '- - -' > /sys/class/scsi_host/host1/scan;echo '- - -' > /sys/class/scsi_host/host2/scan"EOF fi ${COLOR}"${OS_ID} ${OS_RELEASE} 系统别名已设置成功,请重新登陆后生效!"${END}}
set_ubuntu_alias(){ cat >>~/.bashrc <<-EOFalias cdnet="cd /etc/netplan"alias scandisk="echo '- - -' > /sys/class/scsi_host/host0/scan;echo '- - -' > /sys/class/scsi_host/host1/scan;echo '- - -' > /sys/class/scsi_host/host2/scan"EOF ${COLOR}"${OS_ID} ${OS_RELEASE} 系统别名已设置成功,请重新登陆后生效!"${END}}
set_alias(){ if [ ${OS_ID} == "CentOS" -o ${OS_ID} == "Rocky" ];then if grep -Eqi "(.*cdnet|.*vie0|.*vie1|.*scandisk)" ~/.bashrc;then sed -i -e '/.*cdnet/d' -e '/.*vie0/d' -e '/.*vie1/d' -e '/.*scandisk/d' ~/.bashrc set_centos_alias else set_centos_alias fi fi if [ ${OS_ID} == "Ubuntu" ];then if grep -Eqi "(.*cdnet|.*scandisk)" ~/.bashrc;then sed -i -e '/.*cdnet/d' -e '/.*scandisk/d' ~/.bashrc set_ubuntu_alias else set_ubuntu_alias fi fi}
set_vimrc(){ read -p "请输入作者名: " AUTHOR read -p "请输入QQ号: " QQ read -p "请输入网址: " V_URL cat >~/.vimrc <<-EOFset ts=4set expandtabset ignorecaseset cursorlineset autoindentautocmd 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,"#URL: ${V_URL}") call setline(9,"#Description: The test script") call setline(10,"#Copyright (C): ".strftime("%Y")." All rights reserved") call setline(11,"#*********************************************************************************************") call setline(12,"") endifendfuncautocmd BufNewFile * normal GEOF ${COLOR}"${OS_ID} ${OS_RELEASE} vimrc设置完成,请重新系统启动才能生效!"${END}}
aliyun(){ URL=mirrors.aliyun.com}
huawei(){ URL=repo.huaweicloud.com}
tencent(){ URL=mirrors.tencent.com}
tuna(){ URL=mirrors.tuna.tsinghua.edu.cn}
netease(){ URL=mirrors.163.com}
sohu(){ URL=mirrors.sohu.com}
nju(){ URL=mirrors.nju.edu.cn}
ustc(){ URL=mirrors.ustc.edu.cn}
sjtu(){ URL=mirrors.sjtug.sjtu.edu.cn}
fedora(){ URL=archives.fedoraproject.org}
set_yum_rocky8_9(){ [ -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=BaseOSbaseurl=https://${URL}/rocky/\$releasever/BaseOS/\$basearch/os/gpgcheck=1gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-rockyofficial
[AppStream]name=AppStreambaseurl=https://${URL}/rocky/\$releasever/AppStream/\$basearch/os/gpgcheck=1gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-rockyofficial
[extras]name=extrasbaseurl=https://${URL}/rocky/\$releasever/extras/\$basearch/os/gpgcheck=1gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-rockyofficialEOF ${COLOR}"更新镜像源中,请稍等..."${END} dnf clean all &> /dev/null dnf makecache &> /dev/null ${COLOR}"${OS_ID} ${OS_RELEASE} YUM源设置完成!"${END}}
set_yum_rocky8_9_2(){ [ -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=BaseOSbaseurl=https://${URL}/rockylinux/\$releasever/BaseOS/\$basearch/os/gpgcheck=1gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-rockyofficial
[AppStream]name=AppStreambaseurl=https://${URL}/rockylinux/\$releasever/AppStream/\$basearch/os/gpgcheck=1gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-rockyofficial
[extras]name=extrasbaseurl=https://${URL}/rockylinux/\$releasever/extras/\$basearch/os/gpgcheck=1gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-rockyofficialEOF ${COLOR}"更新镜像源中,请稍等..."${END} dnf clean all &> /dev/null dnf makecache &> /dev/null ${COLOR}"${OS_ID} ${OS_RELEASE} YUM源设置完成!"${END}}
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=BaseOSbaseurl=https://${URL}/centos-stream/\$stream/BaseOS/\$basearch/os/gpgcheck=1gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
[AppStream]name=AppStreambaseurl=https://${URL}/centos-stream/\$stream/AppStream/\$basearch/os/gpgcheck=1gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
[extras-common]name=extras-commonbaseurl=https://${URL}/centos-stream/SIGs/\$stream/extras/\$basearch/extras-common/gpgcheck=1gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficialEOF ${COLOR}"更新镜像源中,请稍等..."${END} dnf clean all &> /dev/null dnf makecache &> /dev/null ${COLOR}"${OS_ID} ${OS_RELEASE} YUM源设置完成!"${END}}
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=BaseOSbaseurl=https://${URL}/centos/\$stream/BaseOS/\$basearch/os/gpgcheck=1gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
[AppStream]name=AppStreambaseurl=https://${URL}/centos/\$stream/AppStream/\$basearch/os/gpgcheck=1gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
[extras]name=extrasbaseurl=https://${URL}/centos/\$stream/extras/\$basearch/os/gpgcheck=1gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficialEOF ${COLOR}"更新镜像源中,请稍等..."${END} dnf clean all &> /dev/null dnf makecache &> /dev/null ${COLOR}"${OS_ID} ${OS_RELEASE} YUM源设置完成!"${END}}
set_yum_centos8(){ [ -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=BaseOSbaseurl=https://${URL}/centos-vault/centos/\$releasever/BaseOS/\$basearch/os/gpgcheck=1gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
[AppStream]name=AppStreambaseurl=https://${URL}/centos-vault/centos/\$releasever/AppStream/\$basearch/os/gpgcheck=1gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
[extras]name=extrasbaseurl=https://${URL}/centos-vault/centos/\$releasever/extras/\$basearch/os/gpgcheck=1gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficialEOF ${COLOR}"更新镜像源中,请稍等..."${END} dnf clean all &> /dev/null dnf makecache &> /dev/null ${COLOR}"${OS_ID} ${OS_RELEASE} YUM源设置完成!"${END}}
set_epel_centos8_9(){ cat > /etc/yum.repos.d/epel.repo <<-EOF[epel]name=epelbaseurl=https://${URL}/epel/\$releasever/Everything/\$basearch/gpgcheck=1gpgkey=https://${URL}/epel/RPM-GPG-KEY-EPEL-\$releaseverEOF ${COLOR}"更新镜像源中,请稍等..."${END} dnf clean all &> /dev/null dnf makecache &> /dev/null ${COLOR}"${OS_ID} ${OS_RELEASE} EPEL源设置完成!"${END}}
set_epel_2_centos8_9(){ cat > /etc/yum.repos.d/epel.repo <<-EOF[epel]name=epelbaseurl=https://${URL}/fedora-epel/\$releasever/Everything/\$basearch/gpgcheck=1gpgkey=https://${URL}/fedora-epel/RPM-GPG-KEY-EPEL-\$releaseverEOF ${COLOR}"更新镜像源中,请稍等..."${END} dnf clean all &> /dev/null dnf makecache &> /dev/null ${COLOR}"${OS_ID} ${OS_RELEASE} EPEL源设置完成!"${END}}
set_epel_3_centos8_9(){ cat > /etc/yum.repos.d/epel.repo <<-EOF[epel]name=epelbaseurl=https://${URL}/fedora/epel/\$releasever/Everything/\$basearch/gpgcheck=1gpgkey=https://${URL}/fedora/epel/RPM-GPG-KEY-EPEL-\$releaseverEOF ${COLOR}"更新镜像源中,请稍等..."${END} dnf clean all &> /dev/null dnf makecache &> /dev/null ${COLOR}"${OS_ID} ${OS_RELEASE} EPEL源设置完成!"${END}}
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=basebaseurl=https://${URL}/centos/\$releasever/os/\$basearch/gpgcheck=1gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-\$releasever
[extras]name=extrasbaseurl=https://${URL}/centos/\$releasever/extras/\$basearch/gpgcheck=1gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-\$releasever
[updates]name=updatesbaseurl=https://${URL}/centos/\$releasever/updates/\$basearch/gpgcheck=1gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-\$releaseverEOF ${COLOR}"更新镜像源中,请稍等..."${END} yum clean all &> /dev/null yum makecache &> /dev/null ${COLOR}"${OS_ID} ${OS_RELEASE} YUM源设置完成!"${END}}
set_epel_centos7(){ cat > /etc/yum.repos.d/epel.repo <<-EOF[epel]name=epelbaseurl=https://${URL}/epel/\$releasever/\$basearch/gpgcheck=1gpgkey=https://${URL}/epel/RPM-GPG-KEY-EPEL-\$releaseverEOF ${COLOR}"更新镜像源中,请稍等..."${END} yum clean all &> /dev/null yum makecache &> /dev/null ${COLOR}"${OS_ID} ${OS_RELEASE} EPEL源设置完成!"${END}}
set_epel_2_centos7(){ cat > /etc/yum.repos.d/epel.repo <<-EOF[epel]name=epelbaseurl=https://${URL}/fedora-epel/\$releasever/\$basearch/gpgcheck=1gpgkey=https://${URL}/fedora-epel/RPM-GPG-KEY-EPEL-\$releaseverEOF ${COLOR}"更新镜像源中,请稍等..."${END} yum clean all &> /dev/null yum makecache &> /dev/null ${COLOR}"${OS_ID} ${OS_RELEASE} EPEL源设置完成!"${END}}
set_epel_3_centos7(){ cat > /etc/yum.repos.d/epel.repo <<-EOF[epel]name=epelbaseurl=https://${URL}/fedora/epel/\$releasever/\$basearch/gpgcheck=1gpgkey=https://${URL}/fedora/epel/RPM-GPG-KEY-EPEL-\$releaseverEOF ${COLOR}"更新镜像源中,请稍等..."${END} yum clean all &> /dev/null yum makecache &> /dev/null ${COLOR}"${OS_ID} ${OS_RELEASE} EPEL源设置完成!"${END}}
set_yum_centos6(){ [ -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=basebaseurl=https://${URL}/centos-vault/centos/\$releasever/os/\$basearch/gpgcheck=1gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-\$releasever
[extras]name=extrasbaseurl=https://${URL}/centos-vault/centos/\$releasever/extras/\$basearch/gpgcheck=1gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-\$releasever
[updates]name=updatesbaseurl=https://${URL}/centos-vault/centos/\$releasever/updates/\$basearch/gpgcheck=1gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-\$releaseverEOF ${COLOR}"更新镜像源中,请稍等..."${END} yum clean all &> /dev/null yum makecache &> /dev/null ${COLOR}"${OS_ID} ${OS_RELEASE} YUM源设置完成!"${END}}
set_epel_centos6(){ cat > /etc/yum.repos.d/epel.repo <<-EOF[epel]name=epelbaseurl=https://${URL}/epel/\$releasever/\$basearch/gpgcheck=1gpgkey=https://${URL}/epel/RPM-GPG-KEY-EPEL-\$releaseverEOF ${COLOR}"更新镜像源中,请稍等..."${END} yum clean all &> /dev/null yum makecache &> /dev/null ${COLOR}"${OS_ID} ${OS_RELEASE} EPEL源设置完成!"${END}}
set_epel_2_centos6(){ cat > /etc/yum.repos.d/epel.repo <<-EOF[epel]name=epelbaseurl=https://${URL}/pub/archive/epel/\$releasever/\$basearch/gpgcheck=1gpgkey=https://$(tencent)/epel/RPM-GPG-KEY-EPEL-\$releaseverEOF ${COLOR}"更新镜像源中,请稍等..."${END} yum clean all &> /dev/null yum makecache &> /dev/null ${COLOR}"${OS_ID} ${OS_RELEASE} EPEL源设置完成!"${END}}
rocky8_9_base_menu(){ while true;do echo -e "\E[$[RANDOM%7+31];1m" cat <<-EOF1)阿里镜像源2)网易镜像源3)搜狐镜像源4)南京大学镜像源5)中科大镜像源6)上海交通大学镜像源7)退出EOF echo -e '\E[0m'
read -p "请输入镜像源编号(1-7): " NUM case ${NUM} in 1) aliyun set_yum_rocky8_9_2 ;; 2) netease set_yum_rocky8_9 ;; 3) sohu set_yum_rocky8_9 ;; 4) nju set_yum_rocky8_9 ;; 5) ustc set_yum_rocky8_9 ;; 6) sjtu set_yum_rocky8_9 ;; 7) break ;; *) ${COLOR}"输入错误,请输入正确的数字(1-7)!"${END} ;; esac done}
centos_stream9_base_menu(){ while true;do echo -e "\E[$[RANDOM%7+31];1m" cat <<-EOF1)阿里镜像源2)清华镜像源3)南京大学镜像源4)中科大镜像源5)退出EOF echo -e '\E[0m'
read -p "请输入镜像源编号(1-5): " NUM case ${NUM} in 1) aliyun set_yum_centos_stream9 ;; 2) tuna set_yum_centos_stream9 ;; 3) nju set_yum_centos_stream9 ;; 4) ustc set_yum_centos_stream9 ;; 5) break ;; *) ${COLOR}"输入错误,请输入正确的数字(1-5)!"${END} ;; esac done}
centos_stream8_base_menu(){ while true;do echo -e "\E[$[RANDOM%7+31];1m" cat <<-EOF1)阿里镜像源2)华为镜像源3)腾讯镜像源4)清华镜像源5)网易镜像源6)南京大学镜像源7)中科大镜像源8)退出EOF echo -e '\E[0m'
read -p "请输入镜像源编号(1-8): " NUM case ${NUM} in 1) aliyun set_yum_centos_stream8 ;; 2) huawei set_yum_centos_stream8 ;; 3) tencent set_yum_centos_stream8 ;; 4) tuna set_yum_centos_stream8 ;; 5) netease set_yum_centos_stream8 ;; 6) nju set_yum_centos_stream8 ;; 7) ustc set_yum_centos_stream8 ;; 8) break ;; *) ${COLOR}"输入错误,请输入正确的数字(1-8)!"${END} ;; esac done}
centos8_base_menu(){ while true;do echo -e "\E[$[RANDOM%7+31];1m" cat <<-EOF1)阿里镜像源2)腾讯镜像源3)清华镜像源4)网易镜像源5)南京大学镜像源6)中科大镜像源7)退出EOF echo -e '\E[0m'
read -p "请输入镜像源编号(1-7): " NUM case ${NUM} in 1) aliyun set_yum_centos8 ;; 2) tencent set_yum_centos8 ;; 3) tuna set_yum_centos8 ;; 4) netease set_yum_centos8 ;; 5) nju set_yum_centos8 ;; 6) ustc set_yum_centos8 ;; 7) break ;; *) ${COLOR}"输入错误,请输入正确的数字(1-7)!"${END} ;; esac done}
centos7_base_menu(){ while true;do echo -e "\E[$[RANDOM%7+31];1m" cat <<-EOF1)阿里镜像源2)华为镜像源3)腾讯镜像源4)清华镜像源5)网易镜像源6)南京大学镜像源7)中科大镜像源8)退出EOF echo -e '\E[0m'
read -p "请输入镜像源编号(1-8): " NUM case ${NUM} in 1) aliyun set_yum_centos7 ;; 2) huawei set_yum_centos7 ;; 3) tencent set_yum_centos7 ;; 4) tuna set_yum_centos7 ;; 5) netease set_yum_centos7 ;; 6) nju set_yum_centos7 ;; 7) ustc set_yum_centos7 ;; 8) break ;; *) ${COLOR}"输入错误,请输入正确的数字(1-8)!"${END} ;; esac done}
centos6_base_menu(){ while true;do echo -e "\E[$[RANDOM%7+31];1m" cat <<-EOF1)阿里镜像源2)华为镜像源3)腾讯镜像源4)清华镜像源5)网易镜像源6)南京大学镜像源7)中科大镜像源8)退出EOF echo -e '\E[0m'
read -p "请输入镜像源编号(1-8): " NUM case ${NUM} in 1) aliyun set_yum_centos6 ;; 2) huawei set_yum_centos6 ;; 3) tencent set_yum_centos6 ;; 4) tuna set_yum_centos6 ;; 5) netease set_yum_centos6 ;; 6) nju set_yum_centos6 ;; 7) ustc set_yum_centos6 ;; 8) break ;; *) ${COLOR}"输入错误,请输入正确的数字(1-8)!"${END} ;; esac done}
centos8_9_epel_menu(){ while true;do echo -e "\E[$[RANDOM%7+31];1m" cat <<-EOF1)阿里镜像源2)华为镜像源3)腾讯镜像源4)清华镜像源5)搜狐镜像源6)南京大学镜像源7)中科大镜像源8)上海交通大学镜像源9)退出EOF echo -e '\E[0m'
read -p "请输入镜像源编号(1-9): " NUM case ${NUM} in 1) aliyun set_epel_centos8_9 ;; 2) huawei set_epel_centos8_9 ;; 3) tencent set_epel_centos8_9 ;; 4) tuna set_epel_centos8_9 ;; 5) sohu set_epel_2_centos8_9 ;; 6) nju set_epel_centos8_9 ;; 7) ustc set_epel_centos8_9 ;; 8) sjtu set_epel_3_centos8_9 ;; 9) break ;; *) ${COLOR}"输入错误,请输入正确的数字(1-9)!"${END} ;; esac done}
centos7_epel_menu(){ while true;do echo -e "\E[$[RANDOM%7+31];1m" cat <<-EOF1)阿里镜像源2)华为镜像源3)腾讯镜像源4)清华镜像源5)搜狐镜像源6)南京大学镜像源7)中科大镜像源8)上海交通大学镜像源9)退出EOF echo -e '\E[0m'
read -p "请输入镜像源编号(1-9): " NUM case ${NUM} in 1) aliyun set_epel_centos7 ;; 2) huawei set_epel_centos7 ;; 3) tencent set_epel_centos7 ;; 4) tuna set_epel_centos7 ;; 5) sohu set_epel_2_centos7 ;; 6) nju set_epel_centos7 ;; 7) ustc set_epel_centos7 ;; 8) sjtu set_epel_3_centos7 ;; 9) break ;; *) ${COLOR}"输入错误,请输入正确的数字(1-9)!"${END} ;; esac done}
centos6_epel_menu(){ while true;do echo -e "\E[$[RANDOM%7+31];1m" cat <<-EOF1)腾讯镜像源2)Fedora镜像源3)退出EOF echo -e '\E[0m'
read -p "请输入镜像源编号(1-3): " NUM case ${NUM} in 1) tencent set_epel_centos6 ;; 2) fedora set_epel_2_centos6 ;; 3) break ;; *) ${COLOR}"输入错误,请输入正确的数字(1-3)!"${END} ;; esac done}
rocky_menu(){ while true;do echo -e "\E[$[RANDOM%7+31];1m" cat <<-EOF1)base仓库2)epel仓库3)退出EOF echo -e '\E[0m'
read -p "请输入镜像源编号(1-3): " NUM case ${NUM} in 1) rocky8_9_base_menu ;; 2) centos8_9_epel_menu ;; 3) break ;; *) ${COLOR}"输入错误,请输入正确的数字(1-3)!"${END} ;; esac done}
centos_menu(){ while true;do echo -e "\E[$[RANDOM%7+31];1m" cat <<-EOF1)base仓库2)epel仓库3)退出EOF echo -e '\E[0m'
read -p "请输入镜像源编号(1-3): " NUM case ${NUM} in 1) if [ ${OS_RELEASE_VERSION} == "6" ];then centos6_base_menu elif [ ${OS_NAME} == "Stream" ];then if [ ${OS_RELEASE_VERSION} == "8" ];then centos_stream8_base_menu else centos_stream9_base_menu fi elif [ ${OS_RELEASE_VERSION} == "8" -a ${OS_NAME} == "Linux" ];then centos8_base_menu else centos7_base_menu fi ;; 2) if [ ${OS_RELEASE_VERSION} == "8" -o ${OS_RELEASE_VERSION} == "9" ];then centos8_9_epel_menu elif [ ${OS_RELEASE_VERSION} == "7" ];then centos7_epel_menu else centos6_epel_menu fi ;; 3) break ;; *) ${COLOR}"输入错误,请输入正确的数字(1-3)!"${END} ;; esac done}
set_apt(){ mv /etc/apt/sources.list /etc/apt/sources.list.bak cat > /etc/apt/sources.list <<-EOFdeb http://${URL}/ubuntu/ $(lsb_release -cs) main restricted universe multiversedeb-src http://${URL}/ubuntu/ $(lsb_release -cs) main restricted universe multiverse
deb http://${URL}/ubuntu/ $(lsb_release -cs)-security main restricted universe multiversedeb-src http://${URL}/ubuntu/ $(lsb_release -cs)-security main restricted universe multiverse
deb http://${URL}/ubuntu/ $(lsb_release -cs)-updates main restricted universe multiversedeb-src http://${URL}/ubuntu/ $(lsb_release -cs)-updates main restricted universe multiverse
deb http://${URL}/ubuntu/ $(lsb_release -cs)-proposed main restricted universe multiversedeb-src http://${URL}/ubuntu/ $(lsb_release -cs)-proposed main restricted universe multiverse
deb http://${URL}/ubuntu/ $(lsb_release -cs)-backports main restricted universe multiversedeb-src http://${URL}/ubuntu/ $(lsb_release -cs)-backports main restricted universe multiverseEOF ${COLOR}"更新镜像源中,请稍等..."${END} apt update &> /dev/null ${COLOR}"${OS_ID} ${OS_RELEASE} APT源设置完成!"${END}}
apt_menu(){ while true;do echo -e "\E[$[RANDOM%7+31];1m" cat <<-EOF1)阿里镜像源2)华为镜像源3)腾讯镜像源4)清华镜像源5)网易镜像源6)南京大学镜像源7)中科大镜像源8)上海交通大学镜像源9)退出EOF echo -e '\E[0m'
read -p "请输入镜像源编号(1-9): " NUM case ${NUM} in 1) aliyun set_apt ;; 2) huawei set_apt ;; 3) tencent set_apt ;; 4) tuna set_apt ;; 5) netease set_apt ;; 6) nju set_apt ;; 7) ustc set_apt ;; 8) sjtu set_apt ;; 9) break ;; *) ${COLOR}"输入错误,请输入正确的数字(1-9)!"${END} ;; esac done}
set_mirror_repository(){ if [ ${OS_ID} == "CentOS" ];then centos_menu elif [ ${OS_ID} == "Rocky" ];then rocky_menu else apt_menu fi}
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;then centos_minimal_install else ubuntu_minimal_install fi}
set_mail(){ if [ ${OS_ID} == "CentOS" -o ${OS_ID} == "Rocky" ];then rpm -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/null else dpkg -s mailutils &> /dev/null || apt -y install mailutils fi read -p "请输入邮箱地址: " MAIL read -p "请输入邮箱授权码: " AUTH SMTP=`echo ${MAIL} |awk -F"@" '{print $2}'` cat >~/.mailrc <<-EOFset from=${MAIL}set smtp=smtp.${SMTP}set smtp-auth-user=${MAIL}set smtp-auth-password=${AUTH}set smtp-auth=loginset ssl-verify=ignoreEOF ${COLOR}"${OS_ID} ${OS_RELEASE} 邮件设置完成,请重新登录后才能生效!"${END}}
set_sshd_port(){ disable_selinux disable_firewall read -p "请输入端口号: " PORT sed -i 's/#Port 22/Port '${PORT}'/' /etc/ssh/sshd_config ${COLOR}"${OS_ID} ${OS_RELEASE} 更改SSH端口号已完成,请重启系统后生效!"${END}}
set_centos_eth(){ ETHNAME=`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/grub grub2-mkconfig -o /boot/grub2/grub.cfg >& /dev/null fi
#修改网卡文件名 if [ ${OS_RELEASE_VERSION} == "6" -o ${OS_RELEASE_VERSION} == "7" -o ${OS_RELEASE_VERSION} == "8" ];then mv /etc/sysconfig/network-scripts/ifcfg-${ETHNAME} /etc/sysconfig/network-scripts/ifcfg-eth0 else mv /etc/NetworkManager/system-connections/${ETHNAME}.nmconnection /etc/NetworkManager/system-connections/eth0.nmconnection fi ${COLOR}"${OS_ID} ${OS_RELEASE} 网卡名已修改成功,请重新启动系统后才能生效!"${END}}
set_ubuntu_eth(){ #修改网卡名称配置文件 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/grub grub-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" ];then if [ ${OS_RELEASE_VERSION} == 6 ];then ${COLOR}"${OS_ID} ${OS_RELEASE} 不用修改网卡名"${END} else set_centos_eth fi else set_ubuntu_eth fi}
check_ip(){ local IP=$1 VALID_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; then if [ ${VALID_CHECK} == "yes" ]; then echo "IP ${IP} available!" return 0 else echo "IP ${IP} not available!" return 1 fi else echo "IP format error!" return 1 fi}
set_centos_ip(){ while true; do read -p "请输入IP地址: " IP check_ip ${IP} [ $? -eq 0 ] && break done read -p "请输入子网掩码位数: " C_PREFIX while true; do read -p "请输入网关地址: " GATEWAY check_ip ${GATEWAY} [ $? -eq 0 ] && break done cat > /etc/sysconfig/network-scripts/ifcfg-eth0 <<-EOFNAME=eth0DEVICE=eth0ONBOOT=yesBOOTPROTO=noneTYPE=EthernetIPADDR=${IP}PREFIX=${C_PREFIX}GATEWAY=${GATEWAY}DNS1=223.5.5.5DNS2=180.76.76.76EOF ${COLOR}"${OS_ID} ${OS_RELEASE} IP地址、网关地址和DNS已修改成功,请重新启动系统后生效!"${END}}
set_centos_9_ip(){ while true; do read -p "请输入IP地址: " IP check_ip ${IP} [ $? -eq 0 ] && break done read -p "请输入子网掩码位数: " C_PREFIX while true; do read -p "请输入网关地址: " GATEWAY check_ip ${GATEWAY} [ $? -eq 0 ] && break done cat > /etc/NetworkManager/system-connections/eth0.nmconnection <<-EOF[connection]id=eth0type=ethernetinterface-name=eth0
[ethernet]
[ipv4]address1=${IP}/${C_PREFIX},${GATEWAY}dns=223.5.5.5;180.76.76.76;method=manual
[ipv6]addr-gen-mode=defaultmethod=auto
[proxy]EOF ${COLOR}"${OS_ID} ${OS_RELEASE} IP地址、网关地址和DNS已修改成功,请重新启动系统后生效!"${END}}
set_ubuntu_ip(){ while true; do read -p "请输入IP地址: " IP check_ip ${IP} [ $? -eq 0 ] && break done read -p "请输入子网掩码位数: " U_PREFIX while true; do read -p "请输入网关地址: " GATEWAY check_ip ${GATEWAY} [ $? -eq 0 ] && break done cat > /etc/netplan/01-netcfg.yaml <<-EOFnetwork: version: 2 renderer: networkd ethernets: eth0: dhcp4: no dhcp6: no addresses: [${IP}/${U_PREFIX}] gateway4: ${GATEWAY} nameservers: addresses: [223.5.5.5, 180.76.76.76]EOF ${COLOR}"${OS_ID} ${OS_RELEASE} IP地址、网关地址和DNS已修改成功,请重新启动系统后生效!"${END}}
set_ubuntu_22_ip(){ while true; do read -p "请输入IP地址: " IP check_ip ${IP} [ $? -eq 0 ] && break done read -p "请输入子网掩码位数: " U_PREFIX while true; do read -p "请输入网关地址: " GATEWAY check_ip ${GATEWAY} [ $? -eq 0 ] && break done cat > /etc/netplan/00-installer-config.yaml <<-EOFnetwork: version: 2 renderer: networkd ethernets: eth0: dhcp4: no dhcp6: no addresses: [${IP}/${U_PREFIX}] routes: - to: default via: ${GATEWAY} nameservers: addresses: [223.5.5.5, 180.76.76.76]EOF ${COLOR}"${OS_ID} ${OS_RELEASE} IP地址、网关地址和DNS已修改成功,请重新启动系统后生效!"${END}}
set_ip(){ if [ ${OS_ID} == "CentOS" -o ${OS_ID} == "Rocky" ];then if [ ${OS_RELEASE_VERSION} == "6" -o ${OS_RELEASE_VERSION} == "7" -o ${OS_RELEASE_VERSION} == "8" ];then set_centos_ip else set_centos_9_ip fi elif [ ${OS_RELEASE_VERSION} == "18" -o ${OS_RELEASE_VERSION} == "20" ];then set_dual_ubuntu_ip else set_dual_ubuntu_22_ip fi}
set_dual_centos_ip(){ while true; do read -p "请输入第一块网卡IP地址: " IP check_ip ${IP} [ $? -eq 0 ] && break done read -p "请输入子网掩码位数: " C_PREFIX while true; do read -p "请输入网关地址: " GATEWAY check_ip ${GATEWAY} [ $? -eq 0 ] && break done cat > /etc/sysconfig/network-scripts/ifcfg-eth0 <<-EOFNAME=eth0DEVICE=eth0ONBOOT=yesBOOTPROTO=noneTYPE=EthernetIPADDR=${IP}PREFIX=${C_PREFIX}GATEWAY=${GATEWAY}DNS1=223.5.5.5DNS2=180.76.76.76EOF while true; do read -p "请输入第二块网卡IP地址: " IP2 check_ip ${IP2} [ $? -eq 0 ] && break done read -p "请输入子网掩码位数: " C_PREFIX2 cat > /etc/sysconfig/network-scripts/ifcfg-eth1 <<-EOFNAME=eth1DEVICE=eth1ONBOOT=yesBOOTPROTO=noneTYPE=EthernetIPADDR=${IP2}PREFIX=${C_PREFIX2}EOF ${COLOR}"${OS_ID} ${OS_RELEASE} IP地址、网关地址和DNS已修改成功,请重新启动系统后生效!"${END}}
set_dual_centos_9_ip(){ while true; do read -p "请输入第一块网卡IP地址: " IP check_ip ${IP} [ $? -eq 0 ] && break done read -p "请输入子网掩码位数: " C_PREFIX while true; do read -p "请输入网关地址: " GATEWAY check_ip ${GATEWAY} [ $? -eq 0 ] && break done cat > /etc/NetworkManager/system-connections/eth0.nmconnection <<-EOF[connection]id=eth0type=ethernetinterface-name=eth0
[ethernet]
[ipv4]address1=${IP}/${C_PREFIX},${GATEWAY}dns=223.5.5.5;180.76.76.76;method=manual
[ipv6]addr-gen-mode=defaultmethod=auto
[proxy]EOF while true; do read -p "请输入第二块网卡IP地址: " IP2 check_ip ${IP2} [ $? -eq 0 ] && break done read -p "请输入子网掩码位数: " C_PREFIX2 cat > /etc/NetworkManager/system-connections/eth1.nmconnection <<-EOF[connection]id=eth1type=ethernetinterface-name=eth1
[ethernet]
[ipv4]address1=${IP2}/${C_PREFIX2}method=manual
[ipv6]addr-gen-mode=defaultmethod=auto
[proxy]EOF chmod 600 /etc/NetworkManager/system-connections/eth1.nmconnection ${COLOR}"${OS_ID} ${OS_RELEASE} IP地址、网关地址和DNS已修改成功,请重新启动系统后生效!"${END}}
set_dual_ubuntu_ip(){ while true; do read -p "请输入第一块网卡IP地址: " IP check_ip ${IP} [ $? -eq 0 ] && break done read -p "请输入子网掩码位数: " U_PREFIX while true; do read -p "请输入网关地址: " GATEWAY check_ip ${GATEWAY} [ $? -eq 0 ] && break done while true; do read -p "请输入第二块网卡IP地址: " IP2 check_ip ${IP2} [ $? -eq 0 ] && break done read -p "请输入子网掩码位数: " U_PREFIX2 cat > /etc/netplan/01-netcfg.yaml <<-EOFnetwork: version: 2 renderer: networkd ethernets: eth0: dhcp4: no dhcp6: no addresses: [${IP}/${U_PREFIX}] gateway4: ${GATEWAY} nameservers: addresses: [223.5.5.5, 180.76.76.76] eth1: dhcp4: no dhcp6: no addresses: [${IP2}/${U_PREFIX2}] EOF ${COLOR}"${OS_ID} ${OS_RELEASE} IP地址、网关地址和DNS已修改成功,请重新启动系统后生效!"${END}}
set_dual_ubuntu_22_ip(){ while true; do read -p "请输入第一块网卡IP地址: " IP check_ip ${IP} [ $? -eq 0 ] && break done read -p "请输入子网掩码位数: " U_PREFIX while true; do read -p "请输入网关地址: " GATEWAY check_ip ${GATEWAY} [ $? -eq 0 ] && break done while true; do read -p "请输入第二块网卡IP地址: " IP2 check_ip ${IP2} [ $? -eq 0 ] && break done read -p "请输入子网掩码位数: " U_PREFIX2 cat > /etc/netplan/00-installer-config.yaml <<-EOFnetwork: version: 2 renderer: networkd ethernets: eth0: dhcp4: no dhcp6: no addresses: [${IP}/${U_PREFIX}] routes: - to: default via: ${GATEWAY} nameservers: addresses: [223.5.5.5, 180.76.76.76] eth1: dhcp4: no dhcp6: no addresses: [${IP2}/${U_PREFIX2}] EOF ${COLOR}"${OS_ID} ${OS_RELEASE} IP地址、网关地址和DNS已修改成功,请重新启动系统后生效!"${END}}
set_dual_ip(){ if [ ${OS_ID} == "CentOS" -o ${OS_ID} == "Rocky" ];then if [ ${OS_RELEASE_VERSION} == "6" -o ${OS_RELEASE_VERSION} == "7" -o ${OS_RELEASE_VERSION} == "8" ];then set_dual_centos_ip else set_dual_centos_9_ip fi elif [ ${OS_RELEASE_VERSION} == "18" -o ${OS_RELEASE_VERSION} == "20" ];then set_dual_ubuntu_ip else set_dual_ubuntu_22_ip fi}
set_hostname_all(){ read -p "请输入主机名: " HOST hostnamectl set-hostname ${HOST} ${COLOR}"${OS_ID} ${OS_RELEASE} 主机名设置成功,请重新登录生效!"${END}}
set_hostname6(){ read -p "请输入主机名: " HOST sed -i.bak -r '/^HOSTNAME/s#^(HOSTNAME=).*#\1'${HOST}'#' /etc/sysconfig/network ${COLOR}"${OS_ID} ${OS_RELEASE} 主机名设置成功,请重新登录生效!"${END}}
set_hostname(){ if [ ${OS_RELEASE_VERSION} == 6 ];then set_hostname6 else set_hostname_all fi}
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" ];then if grep -Eqi "^PS1" ~/.bashrc;then sed -i '/^PS1/d' ~/.bashrc centos_ps1 else centos_ps1 fi fi if [ ${OS_ID} == "Ubuntu" ];then if grep -Eqi "^PS1" ~/.bashrc;then sed -i '/^PS1/d' ~/.bashrc ubuntu_ps1 else ubuntu_ps1 fi fi}
set_ps1(){ TIPS="${COLOR}${OS_ID} ${OS_RELEASE} PS1设置成功,请重新登录生效!${END}" while true;do echo -e "\E[$[RANDOM%7+31];1m" cat <<-EOF1)31 红色2)32 绿色3)33 黄色4)34 蓝色5)35 紫色6)36 青色7)随机颜色8)退出EOF echo -e '\E[0m'
read -p "请输入颜色编号(1-8): " NUM case ${NUM} in 1) red set_ps1_env ${TIPS} ;; 2) green set_ps1_env ${TIPS} ;; 3) yellow set_ps1_env ${TIPS} ;; 4) blue set_ps1_env ${TIPS} ;; 5) violet set_ps1_env ${TIPS} ;; 6) cyan_blue set_ps1_env ${TIPS} ;; 7) random_color set_ps1_env ${TIPS} ;; 8) break ;; *) ${COLOR}"输入错误,请输入正确的数字(1-8)!"${END} ;; esac done}
set_vim(){ echo "export EDITOR=vim" >> ~/.bashrc}
set_vim_env(){ if grep -Eqi ".*EDITOR" ~/.bashrc;then sed -i '/.*EDITOR/d' ~/.bashrc set_vim else set_vim fi ${COLOR}"${OS_ID} ${OS_RELEASE} 默认文本编辑器设置成功,请重新登录生效!"${END}}
set_history(){ echo 'export HISTTIMEFORMAT="%F %T "' >> ~/.bashrc }
set_history_env(){ if grep -Eqi ".*HISTTIMEFORMAT" ~/.bashrc;then sed -i '/.*HISTTIMEFORMAT/d' ~/.bashrc set_history else set_history fi ${COLOR}"${OS_ID} ${OS_RELEASE} history格式设置成功,请重新登录生效!"${END}}
set_swap(){ sed -ri 's/.*swap.*/#&/' /etc/fstab if [ ${OS_ID} == "Ubuntu" ];then if [ ${OS_RELEASE_VERSION} == 20 -o ${OS_RELEASE_VERSION} == 22 ];then SD_NAME=`lsblk|awk -F"[ └─]" '/SWAP/{printf $3}'` systemctl mask dev-${SD_NAME}.swap &> /dev/null fi fi swapoff -a ${COLOR}"${OS_ID} ${OS_RELEASE} 禁用swap成功!"${END}}
set_kernel(){ cat > /etc/sysctl.conf <<-EOF# Controls source route verificationnet.ipv4.conf.default.rp_filter = 1net.ipv4.ip_nonlocal_bind = 1net.ipv4.ip_forward = 1
# Do not accept source routingnet.ipv4.conf.default.accept_source_route = 0
# Controls the System Request debugging functionality of the kernelkernel.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 syncookiesnet.ipv4.tcp_syncookies = 1
# Disable netfilter on bridges.net.bridge.bridge-nf-call-ip6tables = 0net.bridge.bridge-nf-call-iptables = 0net.bridge.bridge-nf-call-arptables = 0
# Controls the default maxmimum size of a mesage queuekernel.msgmnb = 65536
# Controls the maximum size of a message, in byteskernel.msgmax = 65536
# Controls the maximum shared segment size, in byteskernel.shmmax = 68719476736
# Controls the maximum number of shared memory segments, in pageskernel.shmall = 4294967296
# TCP kernel paramaternet.ipv4.tcp_mem = 786432 1048576 1572864net.ipv4.tcp_rmem = 4096 87380 4194304net.ipv4.tcp_wmem = 4096 16384 4194304net.ipv4.tcp_window_scaling = 1net.ipv4.tcp_sack = 1
# socket buffernet.core.wmem_default = 8388608net.core.rmem_default = 8388608net.core.rmem_max = 16777216net.core.wmem_max = 16777216net.core.netdev_max_backlog = 262144net.core.somaxconn = 20480net.core.optmem_max = 81920
# TCP connnet.ipv4.tcp_max_syn_backlog = 262144net.ipv4.tcp_syn_retries = 3net.ipv4.tcp_retries1 = 3net.ipv4.tcp_retries2 = 15
# tcp conn reusenet.ipv4.tcp_tw_reuse = 1net.ipv4.tcp_tw_recycle = 0net.ipv4.tcp_fin_timeout = 30net.ipv4.tcp_timestamps = 0
net.ipv4.tcp_max_tw_buckets = 20000net.ipv4.tcp_max_orphans = 3276800net.ipv4.tcp_synack_retries = 1net.ipv4.tcp_syncookies = 1
# keepalive connnet.ipv4.tcp_keepalive_time = 300net.ipv4.tcp_keepalive_intvl = 30net.ipv4.tcp_keepalive_probes = 3net.ipv4.ip_local_port_range = 10001 65000
# swapvm.overcommit_memory = 0vm.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 = 2EOF sysctl -p &> /dev/null ${COLOR}"${OS_ID} ${OS_RELEASE} 优化内核参数成功!"${END}}
set_limits(){ cat >> /etc/security/limits.conf <<-EOFroot soft core unlimitedroot hard core unlimitedroot soft nproc 1000000root hard nproc 1000000root soft nofile 1000000root hard nofile 1000000root soft memlock 32000root hard memlock 32000root soft msgqueue 8192000root hard msgqueue 8192000EOF ${COLOR}"${OS_ID} ${OS_RELEASE} 优化资源限制参数成功!"${END}}
set_localtime(){ ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime echo 'Asia/Shanghai' >/etc/timezone if [ ${OS_ID} == "Ubuntu" ];then cat >> /etc/default/locale <<-EOFLC_TIME=en_DK.UTF-8EOF fi ${COLOR}"${OS_ID} ${OS_RELEASE} 系统时区已设置成功,请重启系统后生效!"${END}}
disable_restart(){ if [ -f /usr/lib/systemd/system/ctrl-alt-del.target ];then cp /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 "请输入密码: " PASSWORD echo ${PASSWORD} |sudo -S sed -ri 's@#(PermitRootLogin )prohibit-password@\1yes@' /etc/ssh/sshd_config sudo systemctl restart sshd sudo -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;do echo -e "\E[$[RANDOM%7+31];1m" cat <<-EOF********************************************************************* 初始化脚本菜单 ** 1.禁用SELinux 15.设置PS1(请进入选择颜色) ** 2.关闭防火墙 16.设置默认文本编辑器为vim ** 3.优化SSH 17.设置history格式 ** 4.设置系统别名 18.禁用SWAP ** 5.1-4全设置 19.优化内核参数 ** 6.设置vimrc配置文件 20.优化资源限制参数 ** 7.设置镜像仓库 21.设置系统时区 ** 8.Minimal安装建议安装软件 22.禁用ctrl+alt+del重启 ** 9.安装邮件服务并配置邮件 23.Ubuntu设置root用户登录 ** 10.更改SSH端口号 24.Ubuntu卸载无用软件包 ** 11.修改网卡名 25.重启系统 ** 12.修改IP地址和网关地址(单网卡) 26.关机 ** 13.修改IP地址和网关地址(双网卡) 27.退出 ** 14.设置主机名 *********************************************************************EOF echo -e '\E[0m'
read -p "请选择相应的编号(1-27): " choice case ${choice} in 1) disable_selinux ;; 2) disable_firewall ;; 3) optimization_sshd ;; 4) set_alias ;; 5) disable_selinux disable_firewall optimization_sshd set_alias ;; 6) set_vimrc ;; 7) set_mirror_repository ;; 8) minimal_install ;; 9) set_mail ;; 10) set_sshd_port ;; 11) set_eth ;; 12) set_ip ;; 13) set_dual_ip ;; 14) set_hostname ;; 15) set_ps1 ;; 16) set_vim_env ;; 17) set_history_env ;; 18) set_swap ;; 19) set_kernel ;; 20) set_limits ;; 21) set_localtime ;; 22) disable_restart ;; 23) set_root_login ;; 24) ubuntu_remove ;; 25) reboot ;; 26) shutdown -h now ;; 27) break ;; *) ${COLOR}"输入错误,请输入正确的数字(1-27)!"${END} ;; esac done}
main(){ os menu}
main

 

raymond

你的鼓励将是我创作的最大动力。

赞赏二维码钟意作者

人喜欢

收录于合集 #shell
 18
上一篇MariaDB数据库基于源码包一键编译安装脚本
阅读 1309
Raymond运维
65篇原创内容
 
 
posted @ 2023-02-10 00:11  往事已成昨天  阅读(289)  评论(0编辑  收藏  举报