centos7初始化设置脚本

近期甲方领导突然要把装机标准化文档内容变成脚本,执行完就能完成基础配置。参考了当时给的某银行脚本,改成这个,记录一下。

#!/bin/bash
# This script is for Linux(Centos,Redhat,OracleLinux) optimization.

# 本脚本包含以下内容:
# 1 常用命令安装            cmdInstall
# 2 关闭防火墙和SELinux     stopFirewallSelinux
# 3 标准参数设置            setParameter
#   3.1 用户资源参数配置        userLimit
#   3.2 内核参数配置            mainParameter
# 4 系统安全加固            securityCheck
#   4.1 登录安全检查            loginSecurityCheck
#   4.2 history时间戳           historyTimestamp
# 5 时间同步设置             serviceNtp

# 显示字体颜色变量
rsred="\033[31m"
rsgreen="\033[32m"
rsend="\033[0m"

# 获取时间
datetime=`date +%Y%m%d`
checktime=$(date +%Y%m%d_%H:%M)

# 日志保存文件
checklog=./"syscheck_${datetime}".log

mkfifo info.fifo
mkfifo error.fifo
#创建管道文件
cat info.fifo | tee -a $checklog &
exec 1>info.fifo   

cat error.fifo | tee -a $checklog &
exec 2>error.fifo 
#把执行过程输出到info文件中


echo -e "**************** 标准环境配置: $checktime *****************" 

#--------------------------------------------------------------------------------------
# 1 常用命令安装
cmdInstall(){
    echo "***************************************************************" 
    echo "*                                                             *" 
    echo "*                       1 常用命令安装                        *" 
    echo "*                                                             *" 
    echo "***************************************************************" 
dir=`pwd`
#unzip $rpmdir/rpm.zip $rpmdir/rpm
yum localinstall -y $dir/rpm/*.rpm
}

#--------------------------------------------------------------------------------------
# 2 关闭防火墙和SELinux
stopFirewallSelinux(){
    echo -e "\n***************************************************************" 
    echo "*                                                             *" 
    echo "*                       2 关闭防火墙和SELinux                 *"  
    echo "*                                                             *" 
    echo "***************************************************************" 

        systemctl stop firewalld.service
        systemctl disable firewalld.service
        echo -e "已关闭:firewalld 防火墙" 

    setenforce 0
    sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
    echo -e "已关闭 SELinux"
}

#--------------------------------------------------------------------------------------
# 3 标准参数设置
setParameter(){
    userLimit
    mainParameter
}

#--------------------------------------------------------------------------------------

#--------------------------------------------------------------------------------------
#   3.1 用户资源参数配置
userLimit(){
    echo -e "\n***************************************************************" 
    echo "*                                                             *" 
    echo "*                       3.2 用户资源参数配置                  *"  
    echo "*                                                             *" 
    echo "***************************************************************" 
    #先备份,再修改配置文件
    nprocfile="/etc/security/limits.conf"


    cp $nprocfile $nprocfile.$datetime
    echo -e "* soft nofile 10240\n* hard nofile 10240\n* soft nproc 10240\n* hard nproc 10240" >> /etc/security/limits.conf

    echo -e "已修改用户资源参数配置文件:$nprocfile\n\n"
    cat $nprocfile
}

#--------------------------------------------------------------------------------------
#   3.2 内核参数配置
mainParameter(){
    echo -e "\n***************************************************************" 
    echo "*                                                             *" 
    echo "*                       3.3 内核参数配置                      *"  
    echo "*                                                             *" 
    echo "***************************************************************" 
    #先备份,然后修改配置文件
    nprocfile="/etc/sysctl.conf"
    cp $nprocfile $nprocfile.$datetime

    echo -e "vm.swappiness=10\nnet.ipv4.tcp_keepalive_time=120\nnet.ipv4.tcp_keepalive_probes=5\nnet.ipv4.tcp_keepalive_intvl=15" >> /etc/sysctl.conf
    
    sysctl -p
    #使配置生效
    
     echo -e "已修改kernel、vm、fs、net参数配置:/etc/sysctl.conf"
}


#--------------------------------------------------------------------------------------
# 4 系统安全加固
securityCheck(){
    loginSecurityCheck
    historyTimestamp
}


#--------------------------------------------------------------------------------------
#   4.1 登录安全检查
loginSecurityCheck(){
    echo "***************************************************************" 
    echo "*                                                             *" 
    echo "*                       4.1 登录安全检查                      *"  
    echo "*                                                             *" 
    echo "***************************************************************" 
#如果直接用脚本展示banner,会导致sftp无法使用。这里先生成脚本,然后通过计划任务将得到的结果写入/etc/motd。
#以文本的形式展示banner,此信息每小时的第五分钟更新一次。
cat <<\EOF > /usr/local/bin/linux_os_banner.sh

#!/bin/bash
#
# Author : Li Zhi
# Version: 1.0
#


# Process count
PROCCOUNT=$( ps -Afl | wc -l )
PROCCOUNT=$( expr $PROCCOUNT - 5 )

# Uptime
UPTIME=$(</proc/uptime)
UPTIME=${UPTIME%%.*}
SECONDS=$(( UPTIME%60 ))
MINUTES=$(( UPTIME/60%60 ))
HOURS=$(( UPTIME/60/60%24 ))
DAYS=$(( UPTIME/60/60/24 ))

# SYSTEM INFO
# Hostname (UPPERCASE)
HOSTNAME=$( echo $(hostname)  | tr '[a-z]' '[A-Z]' )
# IP Address (list all ip addresses)
IP_ADDRESS=$(echo $(ifconfig | sed -En 's/127.0.0.1//;s/.*inet (addr:)?(([0-9]*\.){3}[0-9]*).*/\2/p' |  sed ':a;N;$!ba;s/\n/ , /g') )
# System : Description of the distribution
# SYSTEM=$(echo $(lsb_release -d | awk -F':' '{print $2}' | sed 's/^\s*//g') )
SYSTEM=$(cat /etc/redhat-release)
# Kernel release
KERNEL=$( echo $(uname -r) )
# CPU Info
CPU_INFO=$(echo $(more /proc/cpuinfo | grep processor | wc -l ) "x" $(more /proc/cpuinfo | grep 'model name' | uniq |awk -F":"  '{print $2}') )
# Total Memory
MEMORY=$(echo $(free -m |grep Mem: | awk -F " " '{print $2}') M)
# Memory Used
MEMORY_USED=$(echo $(free -m |grep Mem: | awk -F " " '{print $3}') M)
## get current storage information, how many space a left :)
STORAGE=$(df -h |sed -e 's/^File.*$/\x1b[0;37m&\x1b[1;32m/' | sed -e 's/^Datei.*$/\x1b[0;37m&\x1b[1;32m/' )


echo -e "
\033[1;31m+++++++++++++++++: \033[0;37mSystem Data\033[1;31m :+++++++++++++++++++++++++++++++
+ \033[0;37mHostname \033[1;31m= \033[1;32m$HOSTNAME
\033[1;31m+ \033[0;37mAddress \033[1;31m= \033[1;32m$IP_ADDRESS
\033[1;31m+ \033[0;37mSystem \033[1;31m= \033[1;32m$SYSTEM
\033[1;31m+ \033[0;37mKernel \033[1;31m= \033[1;32m$KERNEL
\033[1;31m+ \033[0;37mUptime \033[1;31m= \033[1;32m$DAYS days, $HOURS hours, $MINUTES minutes, $SECONDS seconds
\033[1;31m+ \033[0;37mCPU Info \033[1;31m= \033[1;32m$CPU_INFO
\033[1;31m+ \033[0;37mMemory \033[1;31m= \033[1;32m$MEMORY
\033[1;31m+ \033[0;37mMemory Used \033[1;31m= \033[1;32m$MEMORY_USED
\033[1;31m+++++++++++++++++: \033[0;37mUser Data\033[1;31m :++++++++++++++++++++++++++++++++
+ \033[0;37mUsername \033[1;31m= \033[1;32m`whoami`
\033[1;31m+ \033[0;37mProcesses \033[1;31m= \033[1;32m$PROCCOUNT of `ulimit -u` MAX
\033[1;31m+++++++++++++++++: \033[0;37mStorage Data\033[1;31m :+++++++++++++++++++++++++++++
\033[1;31m+$STORAGE
\033[1;31m+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\033[0m"
EOF
cron_job="5 * * * * /bin/sh /usr/local/bin/linux_os_banner.sh > /etc/motd"
#备份原有计划任务到文件中(/root/crontab.bak)
crontab -l > crontab.bak
#导出原有计划任务到文件中(conf)
crontab -l > conf
#注释原有类似任务
sed -i '/linux_os_banner.sh/ s/^\(.*\)$/#\1/g' conf
#将新计划任务追加到conf文件中
echo "$cron_job" >> conf
#将conf文件内容写入计划任务
crontab conf
#删除刚才生成的conf文件
rm -f conf
#显示计划任务内容
crontab -l
#查看备份文件(/root/crontab.bak)
ls -l /root/crontab.bak
    echo -e $rsgreen"已设置Banner警告信息" $rsend 
}

#--------------------------------------------------------------------------------------

#-------------------------------------------------------------------------------------- 
# 5 时间同步设置
serviceNtp(){
    echo "***************************************************************" 
    echo "*                                                             *" 
    echo "*                       5 时间同步设置                        *" 
    echo "*                                                             *" 
    echo "***************************************************************" 
    configchrony="/etc/chrony.conf"
    ntpIP="192.168.1.100"
    ####安装ntp客户端、并且配置ntp客户端####
    ntpnum=`rpm -qa | egrep -wc 'chrony'`
    if [ $ntpnum -eq 1 ];then
        echo "本机已安装chrony.可配置chrony client."
    else
        echo "Notice: chrony didn't exit.Please install."
        exit 10
    fi
    cp $configchrony $configchrony.$datetime
       
    #2. 增加NTP服务器配置
    echo -e "server $ntpIP iburst" >> $configchrony
    systemctl restart chronyd
    systemctl enable chronyd
    chronyc sources -v
}


# 1 常用命令安装
cmdInstall
# 2 关闭防火墙和SELinux
stopFirewallSelinux

# 3 标准参数设置
setParameter

# 4 系统安全加固
securityCheck    
# 5 时间同步设置
serviceNtp

#3秒后退出
sleep 3
exit 0

 

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇