如何将CentOS 7 VM中备份检测Shell脚本的输出发送至指定邮箱
在CentOS 7中实现备份检测结果邮件推送
1. 安装邮件发送工具
CentOS 7 默认没有预装可直接发送邮件的 mailx 工具,先通过yum安装:
yum install -y mailx
2. 配置SMTP邮箱(以QQ邮箱为例)
编辑系统邮件配置文件 /etc/mail.rc,添加SMTP相关参数(替换为你自己的邮箱信息):
vi /etc/mail.rc
在文件末尾追加以下内容:
set from=your-qq-email@qq.com set smtp=smtps://smtp.qq.com:465 set smtp-auth-user=your-qq-email@qq.com set smtp-auth-password=your-email-authorization-code set smtp-auth=login set ssl-verify=ignore set nss-config-dir=/etc/pki/nssdb/
注意:
smtp-auth-password不是邮箱登录密码,是邮箱开启POP3/SMTP后生成的授权码(比如QQ邮箱在「设置-账户」中开启POP3/SMTP服务后即可获取)。
3. 修改备份检测脚本,添加邮件发送逻辑
假设你的检测脚本已经能输出备份状态,只需在脚本末尾添加邮件发送命令,或者直接将脚本输出通过管道传递给 mail 命令:
方式1:在脚本内集成发送逻辑
修改你的脚本,将检测结果存入变量后发送:
#!/bin/bash # --- 你的原有备份检测逻辑 --- BACKUP_PATH="/data/backups" LATEST_BACKUP=$(find $BACKUP_PATH -name "backup_*.tar.gz" -mtime -1 | head -n1) if [ -n "$LATEST_BACKUP" ]; then DETECT_RESULT="✅ 今日备份成功完成,备份文件路径:$LATEST_BACKUP" else DETECT_RESULT="❌ 今日备份失败,未找到今日生成的备份文件" fi # --- 添加邮件发送部分 --- echo "$DETECT_RESULT" | mail -s "每日备份检测报告" target-email@xxx.com
方式2:直接管道传递脚本输出
如果你的脚本已经直接输出检测结果,无需修改脚本,直接执行以下命令即可发送邮件:
/path/to/your/backup-check-script.sh | mail -s "每日备份检测报告" target-email@xxx.com
4. 测试邮件发送
先手动执行测试命令,验证邮件是否能正常发送:
echo "备份检测脚本测试邮件" | mail -s "测试:备份检测报告" your-email@xxx.com
登录收件邮箱查看是否收到邮件,若未收到可检查日志 /var/log/maillog 排查问题。
5. 配置定时自动执行
如果需要每天自动检测并发送报告,用crontab添加定时任务:
crontab -e
添加一行定时规则(比如每天早上7点执行脚本):
0 7 * * * /path/to/your/backup-check-script.sh
保存退出后,crontab会自动生效。
内容的提问来源于stack exchange,提问作者sandesh Jadhav
相关产品推荐
相关产品推荐

