centos系统初始化脚本(常用)

1、有这样一种情况,刚用vmware装的centos虚拟机,需要系统初始化,比如关闭防火墙和selinux

设置静态ip,下载常用的软件,比如lrzsz,net-tools,vim等等。

2、根据以上情况,为此写了一个脚本。

#!/bin/bash  
  
# 检查当前系统是否为CentOS  
is_centos() {  
    # 检查/etc/os-release文件中的ID字段  
    local os_id=$(grep -Ei '^ID=' /etc/os-release | cut -d'=' -f2 | tr -d '"')  
    if [[ -z "$os_id" ]]; then  
        # 如果/etc/os-release不存在或没有ID字段,尝试检查/etc/redhat-release  
        if [[ -f /etc/redhat-release ]]; then  
            # CentOS 6或更早版本可能没有/etc/os-release,但会有/etc/redhat-release  
            local redhat_release=$(cat /etc/redhat-release)  
            if [[ $redhat_release == CentOS* ]]; then  
                return 0  
            fi  
        fi  
        return 1  # 既不是CentOS也不是其他Red Hat系的发行版  
    fi  
      
    # 检查ID字段是否为centos  
    if [[ "$os_id" == 'centos' ]]; then  
        return 0  # 是CentOS系统  
    else  
        return 1  # 不是CentOS系统  
    fi  
}  
  
# 调用函数并检查返回值  
if is_centos; then  
    echo -e "\033[32m当前系统为CentOS,继续执行脚本...\033[0m" 


echo "请选择要执行的操作:"
echo "1. 配置本地网卡固定ip和子网掩码,DNS"
echo "2. 系统初始化"
echo "3. xtrabackup物理备份数据库并添加定时任务计划"
echo "4. 退出菜单"

read -p "请输入选项[1-3]: " choice

case $choice in
  1)
    # 显示目录内容
    read -p "请输入你要配置的ip地址: " ip
    read  -p "请输入你要配置的网关地址,nat模式网关是2,桥接为1,比如我的ip是192.168.2.11,网关用的nat,那么就填192.168.2.2,请输入  :" gateway
    printf "现在先备份你的网卡配置文件"
#    cp -ap "$networkInterface" "$networkInterface_bak"
     networkInterface="/etc/sysconfig/network-scripts/ifcfg-ens33"
     networkInterface_bak="_bak" # 定义备份文件的后缀

     # 拼接原始文件路径和后缀来得到备份文件的完整路径
     backupFile="${networkInterface}${networkInterface_bak}"
     # 创建备份文件
     cp -ap "$networkInterface" "$backupFile"
     # 检查备份文件是否成功创建
     if [ -f "$backupFile" ]; then
         echo "网卡备份文件已成功创建: $backupFile"
     else
         echo "网卡备份文件创建失败"
     fi
    sleep 5s
    echo  "配置本地网卡固定ip和子网掩码,DNS"
    sed -i 's/BOOTPROTO="dhcp"/BOOTPROTO="static"/g' "$networkInterface"
    cat > "$networkInterface" << EOF
TYPE="Ethernet"
BOOTPROTO="none"
DEVICE="ens33"
ONBOOT="yes"
IPADDR=$ip
NETMASK=255.255.255.0
GATEWAY=$gateway
DNS1=114.114.114.114
DNS2=8.8.4.4
EOF
    sleep 4s
    printf "配置本地网卡固定ip和子网掩码,DNS完成 \n"
    sleep 5s
    printf "接下来重启网卡"
    service network restart
    sleep 3s

    printf '\033[1;32m重启网卡完成\033[0m\n'

    printf '\033[1;32m配置本地网卡固定ip和子网掩码和DNS完成\033[0m\n'

    echo -e "\033[33m测试网络连通性\033[0m"
    ping -c 3 www.baidu.com  > /dev/null
    if [ $? -eq 0  ]; then
      echo -e "网络连接成功,可以访问外网"
    else
      echo -e "网络连接失败,请查看网卡配置文件,或者是内网机器。"

    fi
    ;;
  2)
    # 系统初始化
    printf "关闭selinux和firewalld"
    systemctl stop firewalld
    setenforce 0
    sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
    sleep 5s

    # 安装必要的工具
    yum -y install epel-release vim screen  wget net-tools  lrzsz tree patch git telnet expect gcc gcc-c++  bash-completion ntpdate

    #优化ssh,将UseDNS和GSSAPIAuthentication设置关闭
    echo -e "优化ssh,将UseDNS和GSSAPIAuthentication设置关闭"
    sleep 2s
    echo -e "创建备份sshd文件"
    cp -ap /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
    sed -i 's/^ *GSSAPIAuthentication yes/GSSAPIAuthentication no/g' /etc/ssh/sshd_config
    sed -i 's/^ *#UseDNS yes/UseDNS no/g' /etc/ssh/sshd_config
    echo -e "\033[36m优化ssh,将UseDNS和GSSAPIAuthentication设置关闭完成\033[0m"
    sleep 2s

    #更新服务器时间
    echo -e "同步系统时间为阿里云时间服务器"
    ntpdate ntp1.aliyun.com

    if [ $? -eq 0 ]
    then

      echo -e "同步系统时间为阿里云时间服务器完成"
    else
      echo -e "同步系统时间为阿里云时间服务器失败,请手动排查"
    fi

    #更新yum源,并将yum源设置阿里云源
    curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
    echo -e "\033[41m请稍等,正在清理缓存,重新构建yum源\033[0m"
    yum clean all > /dev/null
    yum makecache fast > /dev/null
    echo -e "\033[34m系统初始化全部完成\033[0m"


   ;;

  3)
    # xtrabackup物理备份数据库并添加定时任务计划



echo "安装xtrabackup工具"
if [ -f /usr/local/percona-xtrabackup-2.4.27.tar.gz ]
then
  echo -e "xtrabackup工具已存在,跳过安装步骤"
  tar -xf /usr/local/percona-xtrabackup-2.4.27.tar.gz -C /usr/local/
else
  echo -e "开始安装xtrabackup工具"
  wget -O /usr/local/percona-xtrabackup-2.4.27.tar.gz https://downloads.percona.com/downloads/Percona-XtraBackup-2.4/Percona-XtraBackup-2.4.27/binary/tarball/percona-xtrabackup-2.4.27-Linux-x86_64.glibc2.12.tar.gz
  tar -xf /usr/local/percona-xtrabackup-2.4.27.tar.gz -C /usr/local/
fi


if [ $? -eq 0 ]; then
  echo -e "xtrabackup工具安装成功"
else
  echo -e "xtrabackup工具安装失败"
  exit 1
fi
   mkdir -p /xtrabackup
  if [ -d /usr/local/xtrabackup ]
  then
    rm -rf /usr/local/xtrabackup
      mv /usr/local/percona-xtrabackup-2.4.27-Linux-x86_64.glibc2.12 /usr/local/xtrabackup
      ln -s /usr/local/xtrabackup/bin/innobackupex /usr/bin/innobackupex
      echo "export PATH=$PATH:/usr/local/xtrabackup/bin" >> /etc/profile
      source /etc/profile

    else
  mv /usr/local/percona-xtrabackup-2.4.27-Linux-x86_64.glibc2.12 /usr/local/xtrabackup
  ln -s /usr/local/xtrabackup/bin/innobackupex /usr/bin/innobackupex
  echo "export PATH=$PATH:/usr/local/xtrabackup/bin" >> /etc/profile
  source /etc/profile
fi
echo "xtrabackup物理备份数据库并添加定时任务计划"
read -p "请输入数据库用户名: " mysql_user
# 注意:下面的密码读取是不安全的,仅用于示例
read -s -p "请输入数据库的密码(不会显示): " mysql_password

echo -e "创建全量备份文件目录为/xtrabackup"


## 使用MYSQL_PWD环境变量传递密码,注意这仍然不是最佳实践
#
#xtrabackup --backup --user=$mysql_user --host=$mysql_ip --port=$mysql_port --target-dir=/xtrabackup 2>&1 | tee /xtrabackup/backup.log

# 注意:这里并没有添加定时任务计划,因为这是一个复杂的主题,并且通常需要在单独的步骤中完成。
  innobackupex --user=$mysql_user --password=$mysql_password /xtrabackup/full
    ;;
  4)
    # 退出菜单
    echo "退出菜单。"
    ;;
  *)
    # 无效选项
    echo "无效的选项。"
    ;;
esac
else  
    echo -e "\033[31m请在CentOS服务器上执行此脚本。\033[0m"    
    exit 1  # 非CentOS系统,退出脚本并返回错误码1  
fi




  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
CentOS是一种流行的Linux发行版,用于服务器和个人计算机。初始化通用脚本旨在自动化CentOS服务器的初始配置和设置。以下是一个示例: ```bash #!/bin/bash # 更新系统 yum update -y # 安装常用软件 yum install -y git wget unzip # 配置防火墙 systemctl enable firewalld systemctl start firewalld firewall-cmd --zone=public --add-port=80/tcp --permanent # 添加HTTP端口 firewall-cmd --reload # 设置时区 timedatectl set-timezone Asia/Shanghai # 安装和配置NTP服务 yum install -y ntp systemctl enable ntpd systemctl start ntpd # 配置SSH服务 sed -i 's/PasswordAuthentication no/PasswordAuthentication yes/g' /etc/ssh/sshd_config systemctl restart sshd # 配置SELinux sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config # 配置Swap空间 dd if=/dev/zero of=/swapfile bs=1M count=2048 chmod 600 /swapfile mkswap /swapfile swapon /swapfile echo '/swapfile swap swap defaults 0 0' >> /etc/fstab # 安装常用工具 yum install -y vim htop # 完成初始化 echo "CentOS初始化完成!" ``` 这个脚本首先通过`yum update -y`命令更新系统。然后使用`yum install -y`命令安装常用软件,如git、wget和unzip。接下来,配置防火墙以允许HTTP流量通过端口80。然后设置时区并安装、启用NTP服务以同步系统时间。之后,通过修改SSH配置文件启用密码身份验证,并重启SSH服务。接着,禁用SELinux以简化安全设置。最后,分配并启用Swap空间以增加系统的内存容量。最后一步安装vim和htop等常用工具。脚本结束时会显示一条提示信息,确认CentOS初始化已完成。 使用这个通用脚本可以快速为CentOS服务器进行初始配置,节省时间和工作量,并确保系统按照一致的标准进行设置。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值