Revised on February 19, 2025 reset_kylinserver scripts and README files.

This commit is contained in:
raymond999999
2025-02-19 18:46:54 +08:00
parent 79d41ddad1
commit 56b17f9b0a
2 changed files with 708 additions and 53 deletions

View File

@@ -1,4 +1,4 @@
# Rocky、Almalinux、CentOS、Ubuntu、Debian、openEuler、Anolis OS、OpenCloudOSopenSUSE系统初始化脚本
# Rocky、Almalinux、CentOS、Ubuntu、Debian、openEuler、Anolis OS、OpenCloudOSopenSUSE和银河麒麟Kylin Server系统初始化脚本
**Shell脚本源码地址**
@@ -13,7 +13,7 @@ Githubhttps://github.com/raymond999999/shell
| **支持的功能** | **支持的系统** |
| ------------------------------------------------------------ | ------------------------------------------------------------ |
| 修改网卡名、设置网络包括设置IP地址、子网掩码位数、网关地址和DNS地址包括单网卡和双网卡、设置主机名、设置镜像仓库、Minimal安装建议安装软件、关闭防火墙、禁用SELinux、禁用SWAP、设置系统时区、优化资源限制参数、优化内核参数、优化SSH、更改SSH端口号、设置系统别名、设置vimrc配置文件、安装邮件服务并配置、设置PS1、设置默认文本编辑器为vim、设置history格式、禁用ctrl+alt+del重启系统功能、Ubuntu和Debian设置root用户登录、Ubuntu卸载无用软件包、Ubuntu卸载snap。 | v9版支持的系统Rocky 8和9、AlmaLinux 8和9、CentOS 7、CentOS Stream 8、9和10、Ubuntu 18.04/20.04/22.04/24.04、Debian 11和12openEuler版支持的系统openEuler 22.03和24.03Anolis OS版支持的系统Anolis OS 8和23OpenCloudOS版支持的系统OpenCloudOS 8和9openSUSE版支持的系统openSUSE 15。 |
| 修改网卡名、设置网络包括设置IP地址、子网掩码位数、网关地址和DNS地址包括单网卡和双网卡、设置主机名、设置镜像仓库、Minimal安装建议安装软件、关闭防火墙、禁用SELinux、禁用SWAP、设置系统时区、优化资源限制参数、优化内核参数、优化SSH、更改SSH端口号、设置系统别名、设置vimrc配置文件、安装邮件服务并配置、设置PS1、设置默认文本编辑器为vim、设置history格式、禁用ctrl+alt+del重启系统功能、Ubuntu和Debian设置root用户登录、Ubuntu卸载无用软件包、Ubuntu卸载snap。 | v9版支持的系统Rocky 8和9、AlmaLinux 8和9、CentOS 7、CentOS Stream 8、9和10、Ubuntu 18.04/20.04/22.04/24.04、Debian 11和12openEuler版支持的系统openEuler 22.03和24.03Anolis OS版支持的系统Anolis OS 8和23OpenCloudOS版支持的系统OpenCloudOS 8和9openSUSE版支持的系统openSUSE 15Kylin Server版支持的系统银河麒麟Kylin Server V10。 |
**v9_1和v9_2版本的区别**
@@ -27,57 +27,59 @@ v9_1和v9_2版本实现的功能都是一样的只是实现的方式不同。
**版本更新日志:**
| 版本 | 功能 |
| ----------------------- | ------------------------------------------------------------ |
| openSUSE版更新的内容 | 1.添加了对openSUSE 15系统的支持 |
| | 2.修复了“禁用SWAP”不生效的问题 |
| | 3.修复了“禁用ctrl+alt+del重启系统功能”不生效的问题 |
| | 4.修复了“设置PS1”不生效的问题; |
| | 5.脚本地址在“https://gitee.com/raymond9/shell/tree/main/reset/reset_opensuse”目录下。 |
| OpenCloudOS版更新的内容 | 1.添加了对OpenCloudOS 8和9系统的支持 |
| | 2.修复了“禁用SWAP”不生效的问题 |
| | 3.修复了“禁用ctrl+alt+del重启系统功能”不生效的问题 |
| | 4.脚本地址在“https://gitee.com/raymond9/shell/tree/main/reset/reset_opencloudos”目录下。 |
| Anolis OS版更新的内容 | 1.添加了对Anolis OS 8和23系统的支持 |
| | 2.修复了“禁用SWAP”不生效的问题 |
| | 3.修复了“禁用ctrl+alt+del重启系统功能”不生效的问题 |
| | 4.脚本地址在“https://gitee.com/raymond9/shell/tree/main/reset/reset_anolisos”目录下。 |
| openEuler版更新的内容 | 1.添加了对openEuler 22.03和24.03系统的支持; |
| | 2.修复了“禁用SWAP”不生效的问题 |
| | 3.修复了“禁用ctrl+alt+del重启系统功能”不生效的问题 |
| | 4.脚本地址在“https://gitee.com/raymond9/shell/tree/main/reset/reset_openeuler”目录下。 |
| v9版更新内容 | 1.由于CentOS Stream 8 已于 2024 年 5 月 31 日到期, CentOS Linux 7 的生命周期结束日期是 2024 年 6 月 30 日将CentOS Stream 8和CentOS 7的镜像仓库都改成了centos-vault仓库把CentOS 7的epel仓库改成了epel-archive仓库 |
| | 2.添加了对Ubuntu 24.04系统的支持Ubuntu 24.04的变更:网卡配置文件变成了“/etc/netplan/50-cloud-init.yaml”镜像仓库格式变成了DEB822 格式ssh服务的服务名变成了ssh |
| | 3.添加了对Debian 11和12系统的支持 |
| | 4.添加了Almalinux的devel仓库 |
| | 5.修复了“禁用ctrl+alt+del重启系统功能”不生效的问题 |
| | 6.添加了对CentOS Stream 10系统的支持修复了“禁用SWAP”不生效的问题CentOS Stream 10系统pcre安装包名改成了pcre2pcre-devel安装包名改成了pcre2-devel; |
| | 7.修改了某些bug。 |
| | 8.脚本地址在“https://gitee.com/raymond9/shell/tree/main/reset/v9”目录下。 |
| v8版更新内容 | 1.添加了对AlmaLinux 8和9系统的支持 |
| | 2.添加Ubuntu卸载snap的功能 |
| | 3.修改了某些bug。 |
| 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卸载无用软件包。 |
| 版本 | 功能 |
| ------------------------ | ------------------------------------------------------------ |
| Kylin Server版更新的内容 | 1.添加了对银河麒麟Kylin Server V10系统的支持 |
| | 2.脚本地址在“https://gitee.com/raymond9/shell/tree/main/reset/reset_kylinserver”目录下。 |
| openSUSE版更新的内容 | 1.添加了对openSUSE 15系统的支持 |
| | 2.修复了“禁用SWAP”不生效的问题; |
| | 3.修复了“禁用ctrl+alt+del重启系统功能”不生效的问题 |
| | 4.修复了“设置PS1”不生效的问题 |
| | 5.脚本地址在“https://gitee.com/raymond9/shell/tree/main/reset/reset_opensuse”目录下。 |
| OpenCloudOS版更新的内容 | 1.添加了对OpenCloudOS 8和9系统的支持 |
| | 2.修复了“禁用SWAP”不生效的问题 |
| | 3.修复了“禁用ctrl+alt+del重启系统功能”不生效的问题 |
| | 4.脚本地址在“https://gitee.com/raymond9/shell/tree/main/reset/reset_opencloudos”目录下。 |
| Anolis OS版更新的内容 | 1.添加了对Anolis OS 8和23系统的支持 |
| | 2.修复了“禁用SWAP”不生效的问题 |
| | 3.修复了“禁用ctrl+alt+del重启系统功能”不生效的问题 |
| | 4.脚本地址在“https://gitee.com/raymond9/shell/tree/main/reset/reset_anolisos”目录下。 |
| openEuler版更新的内容 | 1.添加了对openEuler 22.03和24.03系统的支持; |
| | 2.修复了“禁用SWAP”不生效的问题 |
| | 3.修复了“禁用ctrl+alt+del重启系统功能”不生效的问题 |
| | 4.脚本地址在“https://gitee.com/raymond9/shell/tree/main/reset/reset_openeuler”目录下。 |
| v9版更新内容 | 1.由于CentOS Stream 8 已于 2024 年 5 月 31 日到期, CentOS Linux 7 的生命周期结束日期是 2024 年 6 月 30 日将CentOS Stream 8和CentOS 7的镜像仓库都改成了centos-vault仓库把CentOS 7的epel仓库改成了epel-archive仓库 |
| | 2.添加了对Ubuntu 24.04系统的支持Ubuntu 24.04的变更:网卡配置文件变成了“/etc/netplan/50-cloud-init.yaml”镜像仓库格式变成了DEB822 格式ssh服务的服务名变成了ssh |
| | 3.添加了对Debian 11和12系统的支持 |
| | 4.添加了Almalinux的devel仓库 |
| | 5.修复了“禁用ctrl+alt+del重启系统功能”不生效的问题 |
| | 6.添加了对CentOS Stream 10系统的支持修复了“禁用SWAP”不生效的问题CentOS Stream 10系统pcre安装包名改成了pcre2pcre-devel安装包名改成了pcre2-devel; |
| | 7.修改了某些bug。 |
| | 8.脚本地址在“https://gitee.com/raymond9/shell/tree/main/reset/v9”目录下。 |
| v8版更新内容 | 1.添加了对AlmaLinux 8和9系统的支持 |
| | 2.添加Ubuntu卸载snap的功能 |
| | 3.修改了某些bug。 |
| 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脚本在使用过程中需要注意的事项**

View File

@@ -0,0 +1,653 @@
#!/bin/bash
#
#**********************************************************************************
#Author: Raymond
#QQ: 88563128
#Date: 2025-02-19
#FileName: reset_opencloudos.sh
#MIRROR: https://blog.csdn.net/qq_25599925
#Description: The reset linux system initialization script supports
# “Kylin Server v10“ operating systems.
#Copyright (C): 2025 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_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_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
mv /etc/sysconfig/network-scripts/ifcfg-${ETHNAME} /etc/sysconfig/network-scripts/ifcfg-eth0
sed -i.bak 's/'${ETHNAME}'/eth0/' /etc/sysconfig/network-scripts/ifcfg-eth0
${COLOR}"${OS_ID} ${OS_RELEASE} 网卡名已修改成功,10秒后,机器会自动重启!"${END}
sleep 10 && shutdown -r now
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_network(){
ETHNAME=`ip addr | awk -F"[ :]" '/^2/{print $3}'`
while true; do
read -p "请输入IP地址: " IP
check_ip ${IP}
[ $? -eq 0 ] && break
done
read -p "请输入子网掩码位数: " PREFIX
while true; do
read -p "请输入网关地址: " GATEWAY
check_ip ${GATEWAY}
[ $? -eq 0 ] && break
done
while true; do
read -p "请输入主DNS地址例如阿里223.5.5.5腾讯119.29.29.29公共114.114.114.114google8.8.8.8等): " PRIMARY_DNS
check_ip ${PRIMARY_DNS}
[ $? -eq 0 ] && break
done
while true; do
read -p "请输入备用DNS地址例如阿里223.6.6.6腾讯119.28.28.28公共114.114.115.115google8.8.4.4等): " BACKUP_DNS
check_ip ${BACKUP_DNS}
[ $? -eq 0 ] && break
done
cat > /etc/sysconfig/network-scripts/ifcfg-eth0 <<-EOF
NAME=${ETHNAME}
DEVICE=${ETHNAME}
ONBOOT=yes
BOOTPROTO=none
TYPE=Ethernet
IPADDR=${IP}
PREFIX=${PREFIX}
GATEWAY=${GATEWAY}
DNS1=${PRIMARY_DNS}
DNS2=${BACKUP_DNS}
EOF
${COLOR}"${OS_ID} ${OS_RELEASE} 网络已设置成功10秒后机器会自动重启!"${END}
sleep 10 && shutdown -r now
}
set_dual_network(){
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 "请输入子网掩码位数: " PREFIX
while true; do
read -p "请输入网关地址: " GATEWAY
check_ip ${GATEWAY}
[ $? -eq 0 ] && break
done
while true; do
read -p "请输入主DNS地址例如阿里223.5.5.5腾讯119.29.29.29公共114.114.114.114google8.8.8.8等): " PRIMARY_DNS
check_ip ${PRIMARY_DNS}
[ $? -eq 0 ] && break
done
while true; do
read -p "请输入备用DNS地址例如阿里223.6.6.6腾讯119.28.28.28公共114.114.115.115google8.8.4.4等): " BACKUP_DNS
check_ip ${BACKUP_DNS}
[ $? -eq 0 ] && break
done
while true; do
read -p "请输入第二块网卡IP地址: " IP2
check_ip ${IP2}
[ $? -eq 0 ] && break
done
read -p "请输入子网掩码位数: " PREFIX2
cat > /etc/sysconfig/network-scripts/ifcfg-${ETHNAME} <<-EOF
NAME=${ETHNAME}
DEVICE=${ETHNAME}
ONBOOT=yes
BOOTPROTO=none
TYPE=Ethernet
IPADDR=${IP}
PREFIX=${PREFIX}
GATEWAY=${GATEWAY}
DNS1=${PRIMARY_DNS}
DNS2=${BACKUP_DNS}
EOF
cat > /etc/sysconfig/network-scripts/ifcfg-${ETHNAME2} <<-EOF
NAME=${ETHNAME2}
DEVICE=${ETHNAME2}
ONBOOT=yes
BOOTPROTO=none
TYPE=Ethernet
IPADDR=${IP2}
PREFIX=${PREFIX2}
EOF
${COLOR}"${OS_ID} ${OS_RELEASE} 网络已设置成功10秒后机器会自动重启!"${END}
sleep 10 && shutdown -r now
}
set_hostname(){
read -p "请输入主机名: " HOST
hostnamectl set-hostname ${HOST}
${COLOR}"${OS_ID} ${OS_RELEASE} 主机名设置成功,请重新登录生效!"${END}
}
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}
}
disable_firewalls(){
rpm -q firewalld &> /dev/null && { systemctl disable --now firewalld &> /dev/null; ${COLOR}"${OS_ID} ${OS_RELEASE} Firewall防火墙已关闭!"${END}; } || ${COLOR}"${OS_ID} ${OS_RELEASE} iptables防火墙已关闭!"${END}
}
disable_selinux(){
if [ `getenforce` == "Enforcing" ];then
sed -ri.bak 's/^(SELINUX=).*/\1disabled/' /etc/selinux/config
setenforce 0
${COLOR}"${OS_ID} ${OS_RELEASE} SELinux已禁用,请重新启动系统后才能永久生效!"${END}
else
${COLOR}"${OS_ID} ${OS_RELEASE} SELinux已被禁用,不用设置!"${END}
fi
}
set_swap(){
if grep -Eqi "noauto" /etc/fstab;then
${COLOR}"${OS_ID} ${OS_RELEASE} swap已被禁用,不用设置!"${END}
else
sed -ri.bak '/swap/s/(.*)(defaults)(.*)/\1\2,noauto\3/g' /etc/fstab
swapoff -a
${COLOR}"${OS_ID} ${OS_RELEASE} 禁用swap已设置成功,请重启系统后生效!"${END}
fi
}
set_localtime(){
timedatectl set-timezone Asia/Shanghai
echo 'Asia/Shanghai' >/etc/timezone
${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_netfilter
cat > /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 = 0
net.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
EOF
MAIN_KERNEL=`uname -r | cut -d. -f1`
SUB_KERNEL=`uname -r | cut -d. -f2`
if [ ${MAIN_KERNEL} -lt "4" -a ${SUB_KERNEL} -lt "12" ];then
cat >> /etc/sysctl.conf <<-EOF
net.ipv4.tcp_tw_recycle = 0
EOF
fi
sysctl -p &> /dev/null
${COLOR}"${OS_ID} ${OS_RELEASE} 优化内核参数成功!"${END}
}
optimization_ssh(){
sed -ri.bak -e 's/^#(UseDNS).*/\1 no/' -e 's/^(GSSAPIAuthentication).*/\1 no/' /etc/ssh/sshd_config
systemctl restart sshd
${COLOR}"${OS_ID} ${OS_RELEASE} SSH已优化完成!"${END}
}
set_ssh_port(){
disable_selinux
disable_firewalls
read -p "请输入端口号: " PORT
sed -i 's/#Port 22/Port '${PORT}'/' /etc/ssh/sshd_config
systemctl restart sshd
${COLOR}"${OS_ID} ${OS_RELEASE} 更改SSH端口号已完成,请重新登陆后生效!"${END}
}
set_base_alias(){
ETHNAME=`ip addr | awk -F"[ :]" '/^2/{print $3}'`
ETHNAME2=`ip addr | awk -F"[ :]" '/^3/{print $3}'`
IP_NUM=`ip addr | awk -F"[: ]" '{print $1}' | grep -v '^$' | wc -l`
if [ ${IP_NUM} == "2" ];then
cat >>~/.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}"
EOF
else
cat >>~/.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}"
EOF
fi
DISK_NAME=`lsblk|awk -F" " '/disk/{printf $1}' | cut -c1-4`
if [ ${DISK_NAME} == "sda" ];then
cat >>~/.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"
EOF
fi
${COLOR}"${OS_ID} ${OS_RELEASE} 系统别名已设置成功,请重新登陆后生效!"${END}
}
set_alias(){
if grep -Eqi "(.*cdnet|.*cdrepo|.*vie0|.*vie1|.*scandisk)" ~/.bashrc;then
sed -i -e '/.*cdnet/d' -e '/.*cdrepo/d' -e '/.*vie0/d' -e '/.*vie1/d' -e '/.*scandisk/d' ~/.bashrc
set_base_alias
else
set_base_alias
fi
}
set_vimrc(){
read -p "请输入作者名: " AUTHOR
read -p "请输入QQ号: " QQ
read -p "请输入网址: " V_MIRROR
cat >~/.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(){
rpm -q postfix &> /dev/null || { ${COLOR}"安装postfix服务,请稍等..."${END};yum -y install postfix &> /dev/null; systemctl enable --now postfix &> /dev/null; }
rpm -q mailx &> /dev/null || { ${COLOR}"安装mailx服务,请稍等..."${END};yum -y install mailx &> /dev/null; }
read -p "请输入邮箱地址: " MAIL
read -p "请输入邮箱授权码: " AUTH
SMTP=`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]"
}
set_base_ps1(){
C_PS1=$(echo "PS1='\[\e[1;${P_COLOR}m\][\u@\h \W]\\$ \[\e[0m\]'" >> ~/.bashrc)
}
set_ps1_env(){
if grep -Eqi "^PS1" ~/.bashrc;then
sed -i '/^PS1/d' ~/.bashrc
set_base_ps1
else
set_base_ps1
fi
}
set_ps1(){
TIPS="${COLOR}${OS_ID} ${OS_RELEASE} PS1设置成功,请重新登录生效!${END}"
while true;do
echo -e "\E[$[RANDOM%7+31];1m"
cat <<-EOF
1)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}
}
disable_restart(){
START_STATUS=`systemctl status ctrl-alt-del.target | sed -n '2p' | awk -F"[[:space:]]+|;" '{print $6}'`
if [ ${START_STATUS} == "enabled" ];then
systemctl disable ctrl-alt-del.target
fi
systemctl mask ctrl-alt-del.target
${COLOR}"${OS_ID} ${OS_RELEASE} 禁用ctrl+alt+del重启功能设置成功!"${END}
}
menu(){
while true;do
echo -e "\E[$[RANDOM%7+31];1m"
cat <<-EOF
***************************************************************
* 系统初始化脚本菜单 *
* 1.修改网卡名 13.更改SSH端口号 *
* 2.设置网络(单网卡) 14.设置系统别名 *
* 3.设置网络(双网卡) 15.设置vimrc配置文件 *
* 4.设置主机名 16.安装邮件服务并配置邮件 *
* 5.Minimal安装建议安装软件 17.设置PS1(请进入选择颜色) *
* 6.关闭防火墙 18.设置默认文本编辑器为vim *
* 7.禁用SELinux 19.设置history格式 *
* 8.禁用SWAP 20.禁用ctrl+alt+del重启系统功能 *
* 9.设置系统时区 21.重启系统 *
* 10.优化资源限制参数 22.关机 *
* 11.优化内核参数 23.退出 *
* 12.优化SSH *
***************************************************************
EOF
echo -e '\E[0m'
read -p "请选择相应的编号(1-23): " choice
case ${choice} in
1)
set_eth
;;
2)
set_network
;;
3)
set_dual_network
;;
4)
set_hostname
;;
5)
minimal_install
;;
6)
disable_firewalls
;;
7)
disable_selinux
;;
8)
set_swap
;;
9)
set_localtime
;;
10)
set_limits
;;
11)
set_kernel
;;
12)
optimization_ssh
;;
13)
set_ssh_port
;;
14)
set_alias
;;
15)
set_vimrc
;;
16)
set_mail
;;
17)
set_ps1
;;
18)
set_vim_env
;;
19)
set_history_env
;;
20)
disable_restart
;;
21)
reboot
;;
22)
shutdown -h now
;;
23)
break
;;
*)
${COLOR}"输入错误,请输入正确的数字(1-23)!"${END}
;;
esac
done
}
main(){
os
if [ ${OS_ID} == "Kylin" ];then
menu
else
${COLOR}"此脚本不支持${OS_ID} ${OS_RELEASE} 系统!"${END}
fi
}
main