├── README.md └── os.sh /README.md: -------------------------------------------------------------------------------- 1 | # 系统优化脚本支持Ubuntu和CentOS 2 | 3 | 4 | 5 | 安装系统后经常有一些基础的系统优化安装,本人比较懒,写了一个脚本,可以后期加入其他优化方面。 6 | 7 | 仓库地址:https://github.com/cby-chen/OS 8 | 9 | 后续可能会继续更新脚本 10 | 11 | shell脚本如下 12 | 13 | ```shell 14 | #!/bin/bash 15 | os=$(cat /etc/os-release 2>/dev/null | grep ^ID= | awk -F= '{print $2}') 16 | 17 | function selinuxset(){ 18 | selinux_status=$(grep -c "SELINUX=disabled" /etc/sysconfig/selinux) 19 | echo "========================禁用SELINUX========================" 20 | if [ "$selinux_status" -eq 0 ];then 21 | sed -i "s#SELINUX=enforcing#SELINUX=disabled#g" /etc/sysconfig/selinux 22 | setenforce 0 23 | grep SELINUX=disabled /etc/sysconfig/selinux 24 | getenforce 25 | else 26 | echo 'SELINUX已处于关闭状态' 27 | grep SELINUX=disabled /etc/sysconfig/selinux 28 | getenforce 29 | fi 30 | echo "完成禁用SELINUX" 31 | echo "===========================================================" 32 | sleep 3 33 | } 34 | 35 | function firewalldset(){ 36 | echo "========================关闭firewalld=======================" 37 | echo '关闭防火墙' 38 | systemctl disable --now firewalld 39 | echo '验证如下' 40 | systemctl list-unit-files | grep firewalld 41 | echo '生产环境下建议启用' 42 | echo "===========================================================" 43 | sleep 3 44 | } 45 | 46 | function ufwset(){ 47 | echo "========================关闭ufw============================" 48 | echo '关闭防火墙' 49 | systemctl disable --now ufw 50 | echo '验证如下' 51 | systemctl list-unit-files | grep ufw 52 | echo '生产环境下建议启用' 53 | echo "===========================================================" 54 | sleep 3 55 | } 56 | 57 | function limitsset(){ 58 | echo "======================修改文件描述符========================" 59 | echo '加大系统文件描述符最大值' 60 | { 61 | echo '* soft nofile 65536' 62 | echo '* hard nofile 65536' 63 | echo '* soft nproc 65536' 64 | echo '* hard nproc 65536' 65 | } >> /etc/security/limits.conf 66 | echo '查看配置内容' 67 | cat /etc/security/limits.conf 68 | echo '设置软硬资源限制' 69 | ulimit -Sn ; ulimit -Hn 70 | echo "===========================================================" 71 | sleep 3 72 | } 73 | 74 | function yumset(){ 75 | echo "======================开始修改YUM源========================" 76 | echo '开始修改YUM源' 77 | sudo sed -e 's|^mirrorlist=|#mirrorlist=|g' -e 's|^#baseurl=http://mirror.centos.org|baseurl=https://mirrors.tuna.tsinghua.edu.cn|g' -i.bak /etc/yum.repos.d/CentOS-*.repo 78 | echo '开始安装常规软件' 79 | yum update -y 80 | yum install curl git wget ntpdate lsof net-tools telnet vim lrzsz tree nmap nc sysstat epel* -y 81 | echo "===========================================================" 82 | sleep 3 83 | } 84 | 85 | function aptset(){ 86 | echo "======================开始修改APT源========================" 87 | echo '开始修改APT源' 88 | apt_stat=$(cat /etc/apt/sources.list | grep -v ^\# | awk -F/ '{print $3}' | grep -v ^$ | awk 'NR==1{print}') 89 | sudo sed -i "s/$apt_stat/mirrors.ustc.edu.cn/g" /etc/apt/sources.list 90 | echo '开始安装常规软件' 91 | apt update -y 92 | apt upgrade -y 93 | apt install vim htop net-tools lrzsz nmap telnet ntpdate sysstat curl git wget -y 94 | echo "===========================================================" 95 | sleep 3 96 | } 97 | 98 | function restartset(){ 99 | echo "===================禁用ctrl+alt+del重启====================" 100 | rm -rf /usr/lib/systemd/system/ctrl-alt-del.target 101 | echo "完成禁用ctrl+alt+del重启" 102 | echo "===========================================================" 103 | sleep 3 104 | } 105 | 106 | function historyset(){ 107 | echo "========================history优化========================" 108 | chk_his=$(cat /etc/profile | grep HISTTIMEFORMAT |wc -l) 109 | if [ $chk_his -eq 0 ];then 110 | cat >> /etc/profile <<'EOF' 111 | #设置history格式 112 | export HISTTIMEFORMAT="[%Y-%m-%d %H:%M:%S] [`whoami`] [`who am i|awk '{print $NF}'|sed -r 's#[()]##g'`]: " 113 | #记录shell执行的每一条命令 114 | export PROMPT_COMMAND='\ 115 | if [ -z "$OLD_PWD" ];then 116 | export OLD_PWD=$PWD; 117 | fi; 118 | if [ ! -z "$LAST_CMD" ] && [ "$(history 1)" != "$LAST_CMD" ]; then 119 | logger -t `whoami`_shell_dir "[$OLD_PWD]$(history 1)"; 120 | fi; 121 | export LAST_CMD="$(history 1)"; 122 | export OLD_PWD=$PWD;' 123 | EOF 124 | source /etc/profile 125 | else 126 | echo "优化项已存在。" 127 | fi 128 | echo "完成history优化" 129 | echo "===========================================================" 130 | sleep 3 131 | } 132 | 133 | function helloset(){ 134 | echo "========================欢迎界面优化========================" 135 | cat << EOF > /etc/profile.d/login-info.sh 136 | #!/bin/sh 137 | # 138 | # @Time : 2022-04-21 139 | # @Author : chenby 140 | # @Desc : ssh login banner 141 | export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin 142 | shopt -q login_shell && : || return 0 143 | echo -e "\033[0;32m 144 | 145 | # # ###### # # #### 146 | # # # # # # # 147 | ###### ##### # # # # 148 | # # # # # # # 149 | # # # # # # # 150 | # # ###### ###### ###### #### by chenby\033[0m" 151 | # os 152 | upSeconds="\$(cut -d. -f1 /proc/uptime)" 153 | secs=\$((\${upSeconds}%60)) 154 | mins=\$((\${upSeconds}/60%60)) 155 | hours=\$((\${upSeconds}/3600%24)) 156 | days=\$((\${upSeconds}/86400)) 157 | UPTIME_INFO=\$(printf "%d days, %02dh %02dm %02ds" "\$days" "\$hours" "\$mins" "\$secs") 158 | if [ -f /etc/redhat-release ] ; then 159 | PRETTY_NAME=\$(< /etc/redhat-release) 160 | elif [ -f /etc/debian_version ]; then 161 | DIST_VER=\$(/dev/null | tail -1) 183 | disktotal=\$(awk '{print \$2}' <<< "\${totaldisk}") 184 | diskused=\$(awk '{print \$3}' <<< "\${totaldisk}") 185 | diskusedper=\$(awk '{print \$5}' <<< "\${totaldisk}") 186 | DISK_INFO="\033[0;33m\${diskused}\033[0m of \033[1;34m\${disktotal}\033[0m disk space used (\033[0;33m\${diskusedper}\033[0m)" 187 | # cpu 188 | cpu=\$(awk -F':' '/^model name/ {print \$2}' /proc/cpuinfo | uniq | sed -e 's/^[ \t]*//') 189 | cpun=\$(grep -c '^processor' /proc/cpuinfo) 190 | cpuc=\$(grep '^cpu cores' /proc/cpuinfo | tail -1 | awk '{print \$4}') 191 | cpup=\$(grep '^physical id' /proc/cpuinfo | wc -l) 192 | CPU_INFO="\${cpu} \${cpup}P \${cpuc}C \${cpun}L" 193 | # get the load averages 194 | read one five fifteen rest < /proc/loadavg 195 | LOADAVG_INFO="\033[0;33m\${one}\033[0m / \${five} / \${fifteen} with \033[1;34m\$(( cpun*cpuc ))\033[0m core(s) at \033[1;34m\$(grep '^cpu MHz' /proc/cpuinfo | tail -1 | awk '{print \$4}')\033 MHz" 196 | # mem 197 | MEM_INFO="\$(cat /proc/meminfo | awk '/MemTotal:/{total=\$2/1024/1024;next} /MemAvailable:/{use=total-\$2/1024/1024; printf("\033[0;33m%.2fGiB\033[0m of \033[1;34m%.2fGiB\033[0m RAM used (\033[0;33m%.2f%%\033[0m)",use,total,(use/total)*100);}')" 198 | # network 199 | # extranet_ip=" and \$(curl -s ip.cip.cc)" 200 | IP_INFO="\$(ip a | grep glo | awk '{print \$2}' | head -1 | cut -f1 -d/)\${extranet_ip:-}" 201 | # Container info 202 | CONTAINER_INFO="\$(sudo /usr/bin/crictl ps -a -o yaml 2> /dev/null | awk '/^ state: /{gsub("CONTAINER_", "", \$NF) ++S[\$NF]}END{for(m in S) printf "%s%s:%s ",substr(m,1,1),tolower(substr(m,2)),S[m]}')Images:\$(sudo /usr/bin/crictl images -q 2> /dev/null | wc -l)" 203 | # info 204 | echo -e " 205 | Information as of: \033[1;34m\$(date +"%Y-%m-%d %T")\033[0m 206 | 207 | \033[0;1;31mProduct\033[0m............: \${MODEL_INFO} 208 | \033[0;1;31mOS\033[0m.................: \${PRETTY_NAME} 209 | \033[0;1;31mKernel\033[0m.............: \${KERNEL} 210 | \033[0;1;31mCPU\033[0m................: \${CPU_INFO} 211 | \033[0;1;31mHostname\033[0m...........: \033[1;34m\$(hostname)\033[0m 212 | \033[0;1;31mIP Addresses\033[0m.......: \033[1;34m\${IP_INFO}\033[0m 213 | \033[0;1;31mUptime\033[0m.............: \033[0;33m\${UPTIME_INFO}\033[0m 214 | \033[0;1;31mMemory\033[0m.............: \${MEM_INFO} 215 | \033[0;1;31mLoad Averages\033[0m......: \${LOADAVG_INFO} 216 | \033[0;1;31mDisk Usage\033[0m.........: \${DISK_INFO} 217 | \033[0;1;31mUsers online\033[0m.......: \033[1;34m\${USER_NUM}\033[0m 218 | \033[0;1;31mRunning Processes\033[0m..: \033[1;34m\${RUNNING}\033[0m 219 | \033[0;1;31mContainer Info\033[0m.....: \${CONTAINER_INFO} 220 | " 221 | EOF 222 | echo "===========================================================" 223 | sleep 3 224 | } 225 | 226 | function sshset(){ 227 | echo "========================root登录优化========================" 228 | echo "生产环境不建议开启 设置root密码" 229 | read -p "输入root密码" rootpw 230 | echo "root:$rootpw" |chpasswd 231 | echo 'PermitRootLogin yes' >> /etc/ssh/sshd_config 232 | systemctl restart sshd 233 | echo "root密码修改为$rootpw" 234 | echo "===========================================================" 235 | sleep 3 236 | } 237 | 238 | 239 | function allin() { 240 | if [ "$os" = "\"centos\"" ]; then 241 | selinuxset 242 | firewalldset 243 | limitsset 244 | yumset 245 | restartset 246 | historyset 247 | helloset 248 | fi 249 | if [ "$os" = "ubuntu" ]; then 250 | sshset 251 | ufwset 252 | limitsset 253 | aptset 254 | restartset 255 | historyset 256 | helloset 257 | fi 258 | } 259 | 260 | function menu() { 261 | clear 262 | echo "#####################################################################" 263 | echo -e "# ${RED}一键基础优化脚本${PLAIN} #" 264 | echo -e "# ${GREEN}作者${PLAIN}: chenby #" 265 | echo -e "# ${GREEN}网址${PLAIN}: https://www.oiox.cn #" 266 | echo -e "# ${GREEN}版本${PLAIN}: V1.0 #" 267 | echo -e "# ${GREEN}说明${PLAIN}: #" 268 | echo -e "# #" 269 | echo "####################################################################" 270 | echo " -------------" 271 | echo -e " ${GREEN}1.${PLAIN} 一键优化" 272 | echo " -------------" 273 | echo -e " ${GREEN}2.${PLAIN} 自定义优化" 274 | echo " -------------" 275 | echo -e " ${GREEN}0.${PLAIN} 退出" 276 | echo " -------------" 277 | 278 | read -p " 请选择操作[0-2]:" chenby 279 | case $chenby in 280 | 0) 281 | exit 0 282 | ;; 283 | 1) 284 | allin 285 | ;; 286 | 2) 287 | setun 288 | ;; 289 | *) 290 | colorEcho $RED " 请选择正确的操作!" 291 | exit 1 292 | ;; 293 | esac 294 | } 295 | 296 | function setun() { 297 | echo " -------------" 298 | echo -e " ${GREEN}1.${PLAIN} 禁用SELINUX" 299 | echo " -------------" 300 | echo -e " ${GREEN}2.${PLAIN} 关闭firewalld" 301 | echo " -------------" 302 | echo -e " ${GREEN}3.${PLAIN} 关闭ufw" 303 | echo " -------------" 304 | echo -e " ${GREEN}4.${PLAIN} 修改文件描述符" 305 | echo " -------------" 306 | echo -e " ${GREEN}5.${PLAIN} 开始修改YUM源" 307 | echo " -------------" 308 | echo -e " ${GREEN}6.${PLAIN} 开始修改APT源" 309 | echo " -------------" 310 | echo -e " ${GREEN}7.${PLAIN} 禁用ctrl+alt+del重启" 311 | echo " -------------" 312 | echo -e " ${GREEN}8.${PLAIN} history优化" 313 | echo " -------------" 314 | echo -e " ${GREEN}9.${PLAIN} 欢迎界面优化" 315 | echo " -------------" 316 | echo -e " ${GREEN}10.${PLAIN} 设置root密码" 317 | echo " -------------" 318 | echo -e " ${GREEN}0.${PLAIN} 退出" 319 | echo " -------------" 320 | 321 | read -p " 请选择操作[0-2]:" cby 322 | case $cby in 323 | 0) 324 | exit 0 325 | ;; 326 | 1) 327 | if [ "$os" = "\"centos\"" ]; then 328 | selinuxset 329 | fi 330 | if [ "$os" = "ubuntu" ]; then 331 | echo 'Ubuntu无需设置' 332 | fi 333 | ;; 334 | 2) 335 | if [ "$os" = "\"centos\"" ]; then 336 | firewalldset 337 | fi 338 | if [ "$os" = "ubuntu" ]; then 339 | echo 'Ubuntu无需设置' 340 | fi 341 | ;; 342 | 3) 343 | if [ "$os" = "\"centos\"" ]; then 344 | echo 'CentOS无需设置' 345 | fi 346 | if [ "$os" = "ubuntu" ]; then 347 | ufwset 348 | fi 349 | ;; 350 | 4) 351 | limitsset 352 | ;; 353 | 5) 354 | if [ "$os" = "\"centos\"" ]; then 355 | yumset 356 | fi 357 | if [ "$os" = "ubuntu" ]; then 358 | echo 'Ubuntu无需设置' 359 | fi 360 | ;; 361 | 6) 362 | if [ "$os" = "\"centos\"" ]; then 363 | echo 'CentOS无需设置' 364 | fi 365 | if [ "$os" = "ubuntu" ]; then 366 | aptset 367 | fi 368 | ;; 369 | 7) 370 | restartset 371 | ;; 372 | 8) 373 | historyset 374 | ;; 375 | 9) 376 | helloset 377 | ;; 378 | 10) 379 | if [ "$os" = "\"centos\"" ]; then 380 | echo 'CentOS无需设置' 381 | fi 382 | if [ "$os" = "ubuntu" ]; then 383 | sshset 384 | fi 385 | ;; 386 | *) 387 | colorEcho $RED " 请选择正确的操作!" 388 | exit 1 389 | ;; 390 | esac 391 | } 392 | 393 | 394 | if [ $(id -u) -eq 0 ];then 395 | menu 396 | else 397 | echo "非root用户!请使用root用户!!!" 398 | exit 1 399 | fi 400 | 401 | ``` 402 | 403 | 404 | # 技术交流 405 | 406 | 作者: 407 | 408 | ![avatar](https://www.oiox.cn/about/2.png) 409 | 410 | 加群: 411 | 412 | ![avatar](https://www.oiox.cn/about/1.png) 413 | 414 |
415 |
416 | 417 | > **关于** 418 | > 419 | > https://www.oiox.cn/ 420 | > 421 | > https://www.oiox.cn/index.php/start-page.html 422 | > 423 | > **CSDN、GitHub、知乎、开源中国、思否、掘金、简书、华为云、阿里云、腾讯云、哔哩哔哩、今日头条、新浪微博、个人博客** 424 | > 425 | > **全网可搜《小陈运维》** 426 | > 427 | > **文章主要发布于微信公众号** 428 | -------------------------------------------------------------------------------- /os.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | os=$(cat /etc/os-release 2>/dev/null | grep ^ID= | awk -F= '{print $2}') 3 | 4 | function selinuxset(){ 5 | selinux_status=$(grep -c "SELINUX=disabled" /etc/sysconfig/selinux) 6 | echo "========================禁用SELINUX========================" 7 | if [ "$selinux_status" -eq 0 ];then 8 | sed -i "s#SELINUX=enforcing#SELINUX=disabled#g" /etc/sysconfig/selinux 9 | setenforce 0 10 | grep SELINUX=disabled /etc/sysconfig/selinux 11 | getenforce 12 | else 13 | echo 'SELINUX已处于关闭状态' 14 | grep SELINUX=disabled /etc/sysconfig/selinux 15 | getenforce 16 | fi 17 | echo "完成禁用SELINUX" 18 | echo "===========================================================" 19 | sleep 3 20 | } 21 | 22 | function firewalldset(){ 23 | echo "========================关闭firewalld=======================" 24 | echo '关闭防火墙' 25 | systemctl disable --now firewalld 26 | echo '验证如下' 27 | systemctl list-unit-files | grep firewalld 28 | echo '生产环境下建议启用' 29 | echo "===========================================================" 30 | sleep 3 31 | } 32 | 33 | function ufwset(){ 34 | echo "========================关闭ufw============================" 35 | echo '关闭防火墙' 36 | systemctl disable --now ufw 37 | echo '验证如下' 38 | systemctl list-unit-files | grep ufw 39 | echo '生产环境下建议启用' 40 | echo "===========================================================" 41 | sleep 3 42 | } 43 | 44 | function limitsset(){ 45 | echo "======================修改文件描述符========================" 46 | echo '加大系统文件描述符最大值' 47 | { 48 | echo '* soft nofile 65536' 49 | echo '* hard nofile 65536' 50 | echo '* soft nproc 65536' 51 | echo '* hard nproc 65536' 52 | } >> /etc/security/limits.conf 53 | echo '查看配置内容' 54 | cat /etc/security/limits.conf 55 | echo '设置软硬资源限制' 56 | ulimit -Sn ; ulimit -Hn 57 | echo "===========================================================" 58 | sleep 3 59 | } 60 | 61 | function yumset(){ 62 | echo "======================开始修改YUM源========================" 63 | echo '开始修改YUM源' 64 | sudo sed -e 's|^mirrorlist=|#mirrorlist=|g' -e 's|^#baseurl=http://mirror.centos.org|baseurl=https://mirrors.tuna.tsinghua.edu.cn|g' -i.bak /etc/yum.repos.d/CentOS-*.repo 65 | echo '开始安装常规软件' 66 | yum update -y 67 | yum install curl git wget ntpdate lsof net-tools telnet vim lrzsz tree nmap nc sysstat epel* -y 68 | echo "===========================================================" 69 | sleep 3 70 | } 71 | 72 | function aptset(){ 73 | echo "======================开始修改APT源========================" 74 | echo '开始修改APT源' 75 | apt_stat=$(cat /etc/apt/sources.list | grep -v ^\# | awk -F/ '{print $3}' | grep -v ^$ | awk 'NR==1{print}') 76 | sudo sed -i "s/$apt_stat/mirrors.ustc.edu.cn/g" /etc/apt/sources.list 77 | echo '开始安装常规软件' 78 | apt update -y 79 | apt upgrade -y 80 | apt install vim htop net-tools lrzsz nmap telnet ntpdate sysstat curl git wget -y 81 | echo "===========================================================" 82 | sleep 3 83 | } 84 | 85 | function restartset(){ 86 | echo "===================禁用ctrl+alt+del重启====================" 87 | rm -rf /usr/lib/systemd/system/ctrl-alt-del.target 88 | echo "完成禁用ctrl+alt+del重启" 89 | echo "===========================================================" 90 | sleep 3 91 | } 92 | 93 | function historyset(){ 94 | echo "========================history优化========================" 95 | chk_his=$(cat /etc/profile | grep HISTTIMEFORMAT |wc -l) 96 | if [ $chk_his -eq 0 ];then 97 | cat >> /etc/profile <<'EOF' 98 | #设置history格式 99 | export HISTTIMEFORMAT="[%Y-%m-%d %H:%M:%S] [`whoami`] [`who am i|awk '{print $NF}'|sed -r 's#[()]##g'`]: " 100 | #记录shell执行的每一条命令 101 | export PROMPT_COMMAND='\ 102 | if [ -z "$OLD_PWD" ];then 103 | export OLD_PWD=$PWD; 104 | fi; 105 | if [ ! -z "$LAST_CMD" ] && [ "$(history 1)" != "$LAST_CMD" ]; then 106 | logger -t `whoami`_shell_dir "[$OLD_PWD]$(history 1)"; 107 | fi; 108 | export LAST_CMD="$(history 1)"; 109 | export OLD_PWD=$PWD;' 110 | EOF 111 | source /etc/profile 112 | else 113 | echo "优化项已存在。" 114 | fi 115 | echo "完成history优化" 116 | echo "===========================================================" 117 | sleep 3 118 | } 119 | 120 | function helloset(){ 121 | echo "========================欢迎界面优化========================" 122 | cat << EOF > /etc/profile.d/login-info.sh 123 | #!/bin/sh 124 | # 125 | # @Time : 2022-04-21 126 | # @Author : chenby 127 | # @Desc : ssh login banner 128 | export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin 129 | shopt -q login_shell && : || return 0 130 | echo -e "\033[0;32m 131 | 132 | # # ###### # # #### 133 | # # # # # # # 134 | ###### ##### # # # # 135 | # # # # # # # 136 | # # # # # # # 137 | # # ###### ###### ###### #### by chenby\033[0m" 138 | # os 139 | upSeconds="\$(cut -d. -f1 /proc/uptime)" 140 | secs=\$((\${upSeconds}%60)) 141 | mins=\$((\${upSeconds}/60%60)) 142 | hours=\$((\${upSeconds}/3600%24)) 143 | days=\$((\${upSeconds}/86400)) 144 | UPTIME_INFO=\$(printf "%d days, %02dh %02dm %02ds" "\$days" "\$hours" "\$mins" "\$secs") 145 | if [ -f /etc/redhat-release ] ; then 146 | PRETTY_NAME=\$(< /etc/redhat-release) 147 | elif [ -f /etc/debian_version ]; then 148 | DIST_VER=\$(/dev/null | tail -1) 170 | disktotal=\$(awk '{print \$2}' <<< "\${totaldisk}") 171 | diskused=\$(awk '{print \$3}' <<< "\${totaldisk}") 172 | diskusedper=\$(awk '{print \$5}' <<< "\${totaldisk}") 173 | DISK_INFO="\033[0;33m\${diskused}\033[0m of \033[1;34m\${disktotal}\033[0m disk space used (\033[0;33m\${diskusedper}\033[0m)" 174 | # cpu 175 | cpu=\$(awk -F':' '/^model name/ {print \$2}' /proc/cpuinfo | uniq | sed -e 's/^[ \t]*//') 176 | cpun=\$(grep -c '^processor' /proc/cpuinfo) 177 | cpuc=\$(grep '^cpu cores' /proc/cpuinfo | tail -1 | awk '{print \$4}') 178 | cpup=\$(grep '^physical id' /proc/cpuinfo | wc -l) 179 | CPU_INFO="\${cpu} \${cpup}P \${cpuc}C \${cpun}L" 180 | # get the load averages 181 | read one five fifteen rest < /proc/loadavg 182 | LOADAVG_INFO="\033[0;33m\${one}\033[0m / \${five} / \${fifteen} with \033[1;34m\$(( cpun*cpuc ))\033[0m core(s) at \033[1;34m\$(grep '^cpu MHz' /proc/cpuinfo | tail -1 | awk '{print \$4}')\033 MHz" 183 | # mem 184 | MEM_INFO="\$(cat /proc/meminfo | awk '/MemTotal:/{total=\$2/1024/1024;next} /MemAvailable:/{use=total-\$2/1024/1024; printf("\033[0;33m%.2fGiB\033[0m of \033[1;34m%.2fGiB\033[0m RAM used (\033[0;33m%.2f%%\033[0m)",use,total,(use/total)*100);}')" 185 | # network 186 | # extranet_ip=" and \$(curl -s ip.cip.cc)" 187 | IP_INFO="\$(ip a | grep glo | awk '{print \$2}' | head -1 | cut -f1 -d/)\${extranet_ip:-}" 188 | # Container info 189 | CONTAINER_INFO="\$(sudo /usr/bin/crictl ps -a -o yaml 2> /dev/null | awk '/^ state: /{gsub("CONTAINER_", "", \$NF) ++S[\$NF]}END{for(m in S) printf "%s%s:%s ",substr(m,1,1),tolower(substr(m,2)),S[m]}')Images:\$(sudo /usr/bin/crictl images -q 2> /dev/null | wc -l)" 190 | # info 191 | echo -e " 192 | Information as of: \033[1;34m\$(date +"%Y-%m-%d %T")\033[0m 193 | 194 | \033[0;1;31mProduct\033[0m............: \${MODEL_INFO} 195 | \033[0;1;31mOS\033[0m.................: \${PRETTY_NAME} 196 | \033[0;1;31mKernel\033[0m.............: \${KERNEL} 197 | \033[0;1;31mCPU\033[0m................: \${CPU_INFO} 198 | \033[0;1;31mHostname\033[0m...........: \033[1;34m\$(hostname)\033[0m 199 | \033[0;1;31mIP Addresses\033[0m.......: \033[1;34m\${IP_INFO}\033[0m 200 | \033[0;1;31mUptime\033[0m.............: \033[0;33m\${UPTIME_INFO}\033[0m 201 | \033[0;1;31mMemory\033[0m.............: \${MEM_INFO} 202 | \033[0;1;31mLoad Averages\033[0m......: \${LOADAVG_INFO} 203 | \033[0;1;31mDisk Usage\033[0m.........: \${DISK_INFO} 204 | \033[0;1;31mUsers online\033[0m.......: \033[1;34m\${USER_NUM}\033[0m 205 | \033[0;1;31mRunning Processes\033[0m..: \033[1;34m\${RUNNING}\033[0m 206 | \033[0;1;31mContainer Info\033[0m.....: \${CONTAINER_INFO} 207 | " 208 | EOF 209 | echo "===========================================================" 210 | sleep 3 211 | } 212 | 213 | function sshset(){ 214 | echo "========================root登录优化========================" 215 | echo "生产环境不建议开启 设置root密码" 216 | read -p "输入root密码" rootpw 217 | echo "root:$rootpw" |chpasswd 218 | echo 'PermitRootLogin yes' >> /etc/ssh/sshd_config 219 | systemctl restart sshd 220 | echo "root密码修改为$rootpw" 221 | echo "===========================================================" 222 | sleep 3 223 | } 224 | 225 | 226 | function allin() { 227 | if [ "$os" = "\"centos\"" ]; then 228 | selinuxset 229 | firewalldset 230 | limitsset 231 | yumset 232 | restartset 233 | historyset 234 | helloset 235 | fi 236 | if [ "$os" = "ubuntu" ]; then 237 | sshset 238 | ufwset 239 | limitsset 240 | aptset 241 | restartset 242 | historyset 243 | helloset 244 | fi 245 | } 246 | 247 | function menu() { 248 | clear 249 | echo "#####################################################################" 250 | echo -e "# ${RED}一键基础优化脚本${PLAIN} #" 251 | echo -e "# ${GREEN}作者${PLAIN}: chenby #" 252 | echo -e "# ${GREEN}网址${PLAIN}: https://www.oiox.cn #" 253 | echo -e "# ${GREEN}版本${PLAIN}: V1.0 #" 254 | echo -e "# ${GREEN}说明${PLAIN}: #" 255 | echo -e "# #" 256 | echo "####################################################################" 257 | echo " -------------" 258 | echo -e " ${GREEN}1.${PLAIN} 一键优化" 259 | echo " -------------" 260 | echo -e " ${GREEN}2.${PLAIN} 自定义优化" 261 | echo " -------------" 262 | echo -e " ${GREEN}0.${PLAIN} 退出" 263 | echo " -------------" 264 | 265 | read -p " 请选择操作[0-2]:" chenby 266 | case $chenby in 267 | 0) 268 | exit 0 269 | ;; 270 | 1) 271 | allin 272 | ;; 273 | 2) 274 | setun 275 | ;; 276 | *) 277 | colorEcho $RED " 请选择正确的操作!" 278 | exit 1 279 | ;; 280 | esac 281 | } 282 | 283 | function setun() { 284 | echo " -------------" 285 | echo -e " ${GREEN}1.${PLAIN} 禁用SELINUX" 286 | echo " -------------" 287 | echo -e " ${GREEN}2.${PLAIN} 关闭firewalld" 288 | echo " -------------" 289 | echo -e " ${GREEN}3.${PLAIN} 关闭ufw" 290 | echo " -------------" 291 | echo -e " ${GREEN}4.${PLAIN} 修改文件描述符" 292 | echo " -------------" 293 | echo -e " ${GREEN}5.${PLAIN} 开始修改YUM源" 294 | echo " -------------" 295 | echo -e " ${GREEN}6.${PLAIN} 开始修改APT源" 296 | echo " -------------" 297 | echo -e " ${GREEN}7.${PLAIN} 禁用ctrl+alt+del重启" 298 | echo " -------------" 299 | echo -e " ${GREEN}8.${PLAIN} history优化" 300 | echo " -------------" 301 | echo -e " ${GREEN}9.${PLAIN} 欢迎界面优化" 302 | echo " -------------" 303 | echo -e " ${GREEN}10.${PLAIN} 设置root密码" 304 | echo " -------------" 305 | echo -e " ${GREEN}0.${PLAIN} 退出" 306 | echo " -------------" 307 | 308 | read -p " 请选择操作[0-2]:" cby 309 | case $cby in 310 | 0) 311 | exit 0 312 | ;; 313 | 1) 314 | if [ "$os" = "\"centos\"" ]; then 315 | selinuxset 316 | fi 317 | if [ "$os" = "ubuntu" ]; then 318 | echo 'Ubuntu无需设置' 319 | fi 320 | ;; 321 | 2) 322 | if [ "$os" = "\"centos\"" ]; then 323 | firewalldset 324 | fi 325 | if [ "$os" = "ubuntu" ]; then 326 | echo 'Ubuntu无需设置' 327 | fi 328 | ;; 329 | 3) 330 | if [ "$os" = "\"centos\"" ]; then 331 | echo 'CentOS无需设置' 332 | fi 333 | if [ "$os" = "ubuntu" ]; then 334 | ufwset 335 | fi 336 | ;; 337 | 4) 338 | limitsset 339 | ;; 340 | 5) 341 | if [ "$os" = "\"centos\"" ]; then 342 | yumset 343 | fi 344 | if [ "$os" = "ubuntu" ]; then 345 | echo 'Ubuntu无需设置' 346 | fi 347 | ;; 348 | 6) 349 | if [ "$os" = "\"centos\"" ]; then 350 | echo 'CentOS无需设置' 351 | fi 352 | if [ "$os" = "ubuntu" ]; then 353 | aptset 354 | fi 355 | ;; 356 | 7) 357 | restartset 358 | ;; 359 | 8) 360 | historyset 361 | ;; 362 | 9) 363 | helloset 364 | ;; 365 | 10) 366 | if [ "$os" = "\"centos\"" ]; then 367 | echo 'CentOS无需设置' 368 | fi 369 | if [ "$os" = "ubuntu" ]; then 370 | sshset 371 | fi 372 | ;; 373 | *) 374 | colorEcho $RED " 请选择正确的操作!" 375 | exit 1 376 | ;; 377 | esac 378 | } 379 | 380 | 381 | if [ $(id -u) -eq 0 ];then 382 | menu 383 | else 384 | echo "非root用户!请使用root用户!!!" 385 | exit 1 386 | fi 387 | --------------------------------------------------------------------------------