Ubuntu定时发送日志到邮件
场景描述
最近在Ubuntu 14.04服务器上跑实验,发现经常出问题但是我又不可能每次都及时去打开服务器看看日志,看看啥情况了,特别是实验数量比较多的时候,这时候希望这个检查日志的过程能够自动化一点,最好是定时发送到我的邮箱里面。
故作如下方案:
方案
1)sudo apt-get install heirloom-mailx -y
安装邮件服务,
而后sudo nano /etc/s-nail.rc
编辑该文件,在末尾添加:
set from=xxx@qq.com
set smtp=smtps://smtp.qq.com:465
set smtp-auth-user=xxx@qq.com
set smtp-auth-password=<你的授权码>
set smtp-auth=login
授权码可以在QQ邮箱->上方设置->账户->POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务->生成授权码
(我开启了IMAP/SMTP服务)这里获取 [1]:
2)新建脚本:nano send-email.sh
,添加如下内容
# this is to send email every 3 hours
# 同步时区
source /etc/profile
curTime=`date`
#echo "$curTime"
cat "repair_2019-08-05.log" | mail -s "(Server2)-$curTime" xxx@qq.com
"(Server2)-$curTime"
是邮件标题
xxx@qq.com 是收件方邮箱
3)赋予执行权限 chmod +x send-email.sh
4)sudo nano /etc/crontab
,在末尾添加:
0 */3 * * * root /bin/bash /xxx/send-email.sh
/xxx/send-email.sh
是这个脚本的绝对路径。
即可。
补充
发邮件的三种方式(可直接在shell中运行):
echo "邮件正文" | mail -s 邮件主题 test@126.com
mail -s test test@126.com < test.txt
mail -s "邮件标题" "111111@qq.com" < content.txt
参考
[1] ubuntu 16.04.1 实现shell发送邮件 https://dushen.iteye.com/blog/2426412
[2] How to send an email using command line? [duplicate] https://askubuntu.com/questions/522431/how-to-send-an-email-using-command-line
[3] Ubuntu 定时清理内存 https://blog.csdn.net/weixin_39278265/article/details/97780311