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