16. Shell-结课脚本

定期备份配置文件

需求分析

  1. 根据等保要求,需要定期备份中间件等配置文件;
  2. 备份文件要求,每天备份一次且同步至异地主机;
  3. 错误发送要求,备份脚本出现错误时第一时间发送邮件;

编写脚本

#!/bin/bash


#说明:
#1. 检查是否安装rsync工具
#2. 备份配置文件脚本
#3. 账号密码远程同步
#4. 本地保留备份5天
#5. 脚本出现错误时发送邮件
#注意:
#此脚本适用于单个软件配置文件备份,如果同一台机器上多个需要调整甚至重写



#源信息配置
SOURCE_DIR="/usr/local/tomcat-6.0.44/conf/"
SOURCE_SOFTWARE_NAME="tomcat"
SOURCE_TEMP_DIR="/tmp/$SOURCE_SOFTWARE_NAME"
LOG_FILES="/tmp/$SOURCE_SOFTWARE_NAME-logs"



#目的信息配置
OBJECTIVE_HOST="192.168.108.131"
OBJECTIVE_ACCOUNT="root"
OBJECTIVE_PASSWOED="cmk521"
OBJECTIVE_DIR="/data/config/tomcat/"



#公用变量及目录环境
DATE_TIME=$(date +%F)
TIME_TIME=$(date +%F-%H-%M-%S)
LOCAL_HOST_IP=$(ip addr | grep inet | grep brd | awk -F " " '{print $2}' | awk -F "/" '{print $1}')
mkdir -p $SOURCE_TEMP_DIR
mkdir -p $LOG_FILES



##########################################################################################################################################################



#同步工具
INSTALL_RSYNC () {
	yum -y install rsync > /dev/null 2>&1
}

rpm -qa | grep rsync > /dev/null 2>&1
if [[ $? == 0 ]]; then
	echo "rsync已安装"
else
	INSTALL_RSYNC
fi



#密码工具
INSTALL_SSHPASS () {
	yum -y install sshpass > /dev/null 2>&1
}

rpm -qa | grep sshpass > /dev/null 2>&1
if [[ $? == 0 ]]; then
	echo "sshpass已安装"
else
	INSTALL_SSHPASS
fi


#邮件工具
CONFIG_MAILX () {
	MAIL_FILE=$(find / -name mail.rc)
	cp $MAIL_FILE $MAIL_FILE.bak

cat >> $MAIL_FILE << EOF
#邮箱配置文件
set from=15515190288@163.com
set smtp=smtp.163.com
set smtp-auth-user=15515190288@163.com
# smtp-auth-password表示我邮箱的第三方客户端授权码
set smtp-auth-password=FWLQDVXFHHQFYAGW
set smtp-auth=login
EOF
}

INSTALL_MAILX () {
	yum -y install mailx postfix sendmail > /dev/null 2>&1
}

rpm -qa | grep mailx > /dev/null 2>&1 && rpm -qa | grep postfix > /dev/null 2>&1 && rpm -qa | grep sendmail > /dev/null 2>&1
if [[ $? == 0 ]]; then
	echo "mailx postfix sendmail 已安装"
else
	INSTALL_MAILX
	CONFIG_MAILX
fi

SEND_ERROR () {
	EMAIL_SUBJECT="$SOURCE_SOFTWARE_NAME 配置文件告警"
	EMAIL_CONTENT="$EMAIL_MESSAGE"
	EMAIL_RECIPIENT="15515190288@163.com"
	EMAIL_FORWARD="1121935967@qq.com,15515190288@163.com"

	echo $EMAIL_CONTENT | mail -s $EMAIL_SUBJECT $EMAIL_RECIPIENT -c $EMAIL_FORWARD
}




#目的主机
ping -c 10 $OBJECTIVE_HOST > /dev/null 2>&1
if [[ $? == 0 ]]; then
	echo "目的主机 $OBJECTIVE_HOST 网络正常"
else
	echo "目的主机 $OBJECTIVE_HOST 网络异常,退出脚本"
	SEND_ERROR
	exit
fi




##########################################################################################################################################################




#打包配置文件
tar -czvf $SOURCE_TEMP_DIR/$SOURCE_SOFTWARE_NAME-$LOCAL_HOST_IP-$DATE_TIME.tgz $SOURCE_DIR > $LOG_FILES/tar-$TIME_TIME.log
if [[ $? == 0 ]]; then
	echo "$SOURCE_SOFTWARE_NAME 本地打包完成"
else
	EMAIL_MESSAGE="$SOURCE_SOFTWARE_NAME 本地打包失败,退出脚本"
	SEND_ERROR
	exit
fi



#同步配置文件到异地
sshpass -p $OBJECTIVE_PASSWOED rsync -avp $SOURCE_TEMP_DIR/*.tgz $OBJECTIVE_ACCOUNT@$OBJECTIVE_HOST:$OBJECTIVE_DIR/ > $LOG_FILES/rsync-$TIME_TIME.log
if [[ $? == 0 ]]; then
	echo "$SOURCE_SOFTWARE_NAME 同步至 $OBJECTIVE_HOST 完成"
else
	EMAIL_MESSAGE="$SOURCE_SOFTWARE_NAME 同步失败,退出脚本"
	SEND_ERROR
	exit
fi



#本地备份留存5天
find $SOURCE_TEMP_DIR -name *.tgz -mtime +5 -type f | xargs rm > /dev/null 2>&1

脚本使用

  1. 注意调整变量信息
#源信息配置
#指定要备份配置文件路径
SOURCE_DIR="/usr/local/tomcat-6.0.44/conf/"
#指定要备份配置文件名称
SOURCE_SOFTWARE_NAME="tomcat"
#指定临时目录,无特殊需求可以不用修改
SOURCE_TEMP_DIR="/tmp/$SOURCE_SOFTWARE_NAME"
#指定临时日志,无特殊需求可以不用修改
LOG_FILES="/tmp/$SOURCE_SOFTWARE_NAME-logs"



#目的信息配置
#异地备份主机地址
OBJECTIVE_HOST="192.168.108.131"
#异地备份主机用户名称
OBJECTIVE_ACCOUNT="root"
#异地备份主机用户密码
OBJECTIVE_PASSWOED="cmk521"
#异地备份主机备份路径
OBJECTIVE_DIR="/data/config/tomcat/"



#邮件告警
#邮件的主题,无特殊需求可以不用修改
EMAIL_SUBJECT="$SOURCE_SOFTWARE_NAME 配置文件告警"
#邮件的内容,无特殊需求可以不用修改
EMAIL_CONTENT="$EMAIL_MESSAGE"
#邮件的收件人,设置为自己的收件邮箱
EMAIL_RECIPIENT="15515190288@163.com"
#邮件的抄送人,设置为要抄送的收件邮箱,多个用","隔开
EMAIL_FORWARD="1121935967@qq.com,15515190288@163.com"



#邮箱配置文件
#邮箱发件人
set from=15515190288@163.com
set smtp=smtp.163.com
#邮件认证用户
set smtp-auth-user=15515190288@163.com
#邮箱认证用户的第三方客户端授权码
set smtp-auth-password=KPGMJFBADGSBUGVN
set smtp-auth=login
  1. 定时任务设定
#注意脚本存放路径

#脚本赋予可执行权限
chmod a+x /root/configuration-backup.sh
#脚本追加到定时任务
(crontab -l;echo "00 2 * * * /root/configuration-backup.sh >/dev/null 2>&1") | crontab
  1. 附件

image.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值