某企业准备了一批Linux服务器(系统有7版本与8版本)来运行业务,现在需要将服务器做初始配置,编写一个脚本可以匹配不同系统的服务器实现以下需求:

1,所有服务器永久关闭防火墙服务和SELinux

2,关闭7版本系统的命令历史记录,修改8版本的命令历史记录最多保存2000条并加上时间戳

3,关闭8版本系统的交换分区

4,定义root远程登录系统后的ssh保持时间为300秒

5,设置时间同步,ntp服务器地址是192.168.88.240


  1. #!/bin/bash
  2. #脚本执行完后,用ssh远程登录测试
  3. #可以先手工备份/etc/fstab和/etc/profile

  4. #1)判断当前账户身份,并关闭防火墙与selinux
  5. [ $UID -ne 0 ] && echo "请使用管理员操作" && exit
  6. systemctl stop firewalld
  7. systemctl disable firewalld
  8. setenforce 0
  9. sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config

  10. #2)根据不同版本的系统执行各自的任务
  11. egrep -q "\s+8\.[0-9]" /etc/redhat-release                    #判断系统版本
  12. if [ $? -ne 0 ];then
  13. sed -ri 's/HISTSIZE=[0-9]+/HISTSIZE=0/' /etc/profile        #关闭历史命令
  14. else
  15. sed -ri 's/HISTSIZE=[0-9]+/HISTSIZE=2000/' /etc/profile        #历史命令2000
  16. sed -i '/^export /i HISTTIMEFORMAT="%F %T "' /etc/profile    #历史命令时间戳
  17. swapoff -a                                        #关闭交换分区
  18. sed -i '/swap/s/^/#/' /etc/fstab                    #关闭交换分区自动挂载
  19. fi

  20. #3)最后所有机器设置ssh超时时间与时间同步
  21. echo "export TMOUT=300" >> ~/.bash_profile                #定义ssh超时退出时间
  22. yum -y install chrony
  23. systemctl enable chronyd
  24. sed -ri '/^(pool|server).*iburst/s/^/#/' /etc/chrony.conf
  25. sed -i '1i server 192.168.88.240 iburst' /etc/chrony.conf
  26. systemctl restart chronyd