前言:
因公司业务增加, 陆续新增服务器, 时不时的来几台, 手动地一台台对服务器初始化操作感觉太麻烦.
于是乎, 根据初始化需求整合了一个初始化脚本, 实现批量脚本初始化操作.
说明:
本脚本根据自身需求编写而成, 集成了 Centos7 服务器的基本初始化步骤.
其中包含如下基础优化内容:
1)SELinux 关闭;
2)Firewalld 关闭;
3)Bash 环境修改;
4)Openfile 系统最大打开文件数配置;
5)Hostname 主机名修改;
6)History 历史记录配置等.
注意:
A) 脚本执行完后将自动重启服务器;
B) 执行脚本前应在 / etc/hosts 中配置好对应的解析, 如 10.10.10.10 kazihuo 内容添加到 hosts 文件中, 执行完脚本后, 服务器 10.10.10.10 将自动将 Hostname 主机名配置成 "kazihuo" ;
C) 确保存在 /tmp/sysctl.conf 文件, 即将已配置好的 Kernel 内核优化参数文件放置 /tmp 目录下, 执行完脚本后, 其优化参数将自动配置到服务器中; 如无优化文件, 即在最后的函数中注释 137 行 Kernel 即可;
内容:
脚本内容如下:
- [root@kazihuo ~]# cat init.sh
- #!/bin/bash
- #====================================================
- # Author: kazihuo
- # Blog: https://www.cnblogs.com/kazihuo
- # Create Date: 2019-01-24
- # 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
- function Openfile(){
- 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 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 eth0>/dev/null
- RETVAL=$?
- if [ $RETVAL -ne 0 ];then
- /usr/bin/mv /etc/sysconfig/network-scripts/ifcfg-e*/etc/sysconfig/network-scripts/ifcfg-eth0>/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=eth0' /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 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
- Openfile
- Kernel
- Hostname
- History
- #Device
- Wait
- reboot
- }
- main
若有其他需求, 可以其为基底进行个性化修改!
来源: https://www.cnblogs.com/kazihuo/p/10313219.html