跟着鸟哥的《私房菜》学习LINUX的例行性工作这一章,需要配置/etc/crontab文件来进行自动化调度,实验过程中如果某一项工作执行结果有输出或者是报错时默认都会向root管理员发送一封邮件。当时就在考虑要是直接给自己常用的163或者其他的邮箱可能更方便解决问题,接下来就着手解决这个问题。

从网上找了好多资料,多数都在说需要配置smtp服务器或者需要安装sendmail什么的软件来解决向外发送邮件的问题,其中有篇介绍比较实用(接触的不多,或许对我目前来说比较实用),不需要安装第三方的程序,直接配置/etc/mail.rc这个文件smtp配置为网易的smtp.163.com即可,接下来是相关配置:

vim /etc/mail.rc
#在最后添加
set from="此处填写你的邮件地址"    
smtp=smtp.163.com
set smtp-auth-user="邮箱用户名" smtp-auth-password="邮箱密码"    smtp-auth=login

配置完毕进行crontab配置

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=test@163.com    #测试邮箱替换为自己的邮箱即可
#MAILTO=root
HOME=/
# For details see man 4 crontabs
# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name command to be executed
 */2 *  *  *  * root run-parts  /root/runcron >> /root/cron/log/crontab.log

在讲解脚本那一章有一个自动ping某个网段主机网络状态的脚本,这次把他拿来放到root下面新建一个runcron文件夹中,这个文件夹用来在某个时间点,通过crontab调用执行其中的shell脚本。run-parts就是这个命令的作用就是讲后面接的目录内的所有文件找出来执行,如果只是需要执行一条脚本或命令时,将run-parts 替换为相应的脚本名即可,后面的文件夹也去掉。因为此次试验只是在运行出现错误的时候才会去发送邮件,所以将程序执行成功的输出重定向到/root/cron/log/crontab.log这个文件中。

下边是执行后的效果,在测试中故意将log文件夹写错从而无法将输出结果写入crontab.log而报错并将错误信息以邮件形式发送到填写的邮箱当中去。

wKiom1c1inWghelEAABnxkr19OM411.jpg

wKioL1c1i1jjRGe5AABTb_Ackks982.jpg

wKiom1c1inbz_btuAAEP8u6ZU_A147.jpg