Centos7系统初始化脚本

Centos7系统初始化脚本##

前言:
  因公司业务增加,陆续新增服务器,时不时的来几台,手动地一台台对服务器初始化操作感觉太麻烦。于是乎,根据初始化需求整合了一个初始化脚本,实现批量脚本初始化操作。

说明:
  本脚本根据自身需求编写而成,集成了Centos7服务器的基本初始化步骤。

其中包含如下基础优化内容:
  1)SELinux关闭;
  2)Firewalld关闭;
  3)Bash环境修改;
  4)Openfile系统最大打开文件数配置;
  5)系统内核参数优化配置;
  6)Hostname主机名修改;
  7)History历史记录配置;
  8)个性化配置等。
注意:
  A)脚本执行完后将自动重启服务器;
  B)执行脚本前应在/etc/hosts中配置好对应的解析,如 10.10.10.10 kazihuo 内容添加到hosts文件中,执行完脚本后,服务器10.10.10.10将自动将Hostname主机名配置成 “jumpserver” ;
  C)确保存在 /tmp/sysctl.conf 文件,即将已配置好的Kernel内核优化参数文件放置 /tmp 目录下,执行完脚本后,其优化参数将自动配置到服务器中;如无优化文件,即在最后的函数中注释 Kernel 即可;

内容:
  脚本内容如下:
  [root@jumpserver ~]# cat /shell/init.sh

在这里插入代码片
```#!/bin/bash
#====================================================
# Author: Mr.song
# Blog: https://blog.csdn.net/qq_46229380/article/details/108982089
# Create Date: 2020-10-9
# Description: It works for system initalization.
#====================================================

#State:Plese confirm the files of /etc/hosts and /tmp/sysctl.conf before using the script

[ -f /etc/init.d/functions ] && source /etc/init.d/functions

# Defined result function
function Msg(){
      
    if [ $? -eq 0 ];then
        action "$1" /bin/true
    else
        action "$1" /bin/false
    fi
}

# Defined close selinux function
function Selinux(){
      
    [ -f /etc/selinux/config ] && {
      
    sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
    setenforce 0
    Msg "Close selinux"
    }
}

# Defined close firewalld function
function Firewalld(){
      
    systemctl stop firewalld.service
    systemctl disable firewalld.service  >/dev/null 2>&1
    Msg "Close firewalld"
}

# Defined bashrc function
function Bashrc(){
      
    sed -i 's/\\h \\W/\\h \\w/g' /etc/bashrc
    Msg "Bashrc"
}

# Defined open files function for Centos6.
function Openfile6(){
      
    if [ `egrep "^\*" /etc/security/limits.conf|wc -l` -eq 0 ];then
        echo '* - nofile 65535' >> /etc/security/limits.conf
        ulimit -SHn 65535
        Msg "Open files"
    fi
}

# Defined open files function for Centos7.
function Openfile7(){
      
    if [ `egrep "^De" /etc/systemd/system.conf|wc -l` -eq 0 ];then
        echo 'DefaultLimitCORE=infinity' >> /etc/systemd/system.conf
        echo 'DefaultLimitNOFILE=100000' >> /etc/systemd/system.conf
        echo 'DefaultLimitNPROC=100000' >> /etc/systemd/system.conf
        ulimit -SHn 100000
        Msg "Open files"
    fi
}

# Defined kernel paramters function
function Kernel(){
      
    if [ -f /tmp/sysctl.conf ];then
        /usr/bin/\cp /etc/sysctl.conf /etc/sysctl.conf.$RANDOM
        /usr/bin/\cp /tmp/sysctl.conf /etc/
        sysctl -p >/dev/null 2>&1
        Msg "kernel paramters"
    else
        echo "/tmp/sysctl.conf is not exist"
    fi
}

# Defined hostname function
function Hostname(){
      
    ip=`/usr/sbin/ip addr|grep brd|awk 'NR==3{print $2}'|awk -F "/" '{print $1}'`
    name=`grep -w "$ip" /etc/hosts|awk '{print $2}'`
    if [ -z $name ];then
        sleep 1
    else
        echo $name > /etc/hostname
        hostnamectl set-hostname $name
        Msg "Hostname"
    fi
}

# Defined device function
function Device(){
      
    /usr/sbin/ip addr|grep ens192  >/dev/null
    RETVAL=$?
    if [ $RETVAL -ne 0 ];then
        /usr/bin/mv /etc/sysconfig/network-scripts/ifcfg-e* /etc/sysconfig/network-scripts/ifcfg-ens192 >/dev/null 2>&1
        sed -i 's/quiet/quiet net.ifnames=0 biosdevname=0/g' /etc/default/grub
        sed -i 's/^DEVICE/#DEVICE/g' /etc/sysconfig/network-scripts/ifcfg-e*
        sed -i '1i DEVICE=ens192' /etc/sysconfig/network-scripts/ifcfg-e*
        /usr/sbin/grub2-mkconfig -o /boot/grub2/grub.cfg >/dev/null 2>&1
        Msg "Device--[WARNING]effecting after reboot~~~"
    else
        echo "the name of eths is exist"
    fi
}

# History collect
function History(){
      
    cat >>/etc/profile.d/history.sh <<EOF
#history
USER=\`whoami\`
USER_IP=\`who -u am i 2>/dev/null|egrep -o "([0-9]{1,3}\\.){3}[0-9]{1,3}"\`
if [ "\$USER_IP" = "" ]; then
USER_IP=\`hostname\`
fi
if [ ! -d /var/log/history ]; then
mkdir /var/log/history
chmod 777 /var/log/history
fi
if [ ! -d /var/log/history/\${
      LOGNAME} ]; then
mkdir /var/log/history/\${
      LOGNAME}
chmod 300 /var/log/history/\${
      LOGNAME}
fi
export HISTSIZE=4096
DT=\`date +"%Y%m%d_%H:%M:%S"\`
export HISTFILE="/var/log/history/\${LOGNAME}/\${USER}@\${USER_IP}_\$DT"
chmod 600 /var/log/history/\${LOGNAME}/*history* 2>/dev/null
EOF
    Msg "History collect"
}

# Defined the hobby.
function Hobby(){
     
    mkdir -p /{
     luomurui,luomurui-bak}/{
     scr,pkg,test,info}
}

# Defined wait function
function Wait(){
     
    echo ""
    echo -n -e "\033[31mTHE SYSTEM IS REBOOTING\033[0m"
    for ((i=0;i<3;i++))
    do
        echo -n "~~ "
        sleep 1
    done
    echo
}

# Defined main function
function main(){
     
Selinux
Firewalld
Bashrc
#Openfile6
Openfile7
Kernel
Hostname
Device
History
Hobby
Wait
reboot
}
main


你可能感兴趣的:(linux,shell)