Sending Email Alerts Through Cron
Cron is the Linux task scheduler that is responsible for making sure scripts run at their specified times. Cron is often used for things like, log rotation, backup scripts, updating file indexes, and running custom scripts. In the event a task runs into problems or errors Cron generally tries to email the local administrator of the machine. This means it tries to send an email to itself instead of an “internet accessible” email address like, ‘user@gmail.com’.
We can change this default behavior by changing the MAILTO variable.
Note: This will not work if you have not setup an email server.
Setting The Email Sending (Gmail and sSMTP)
Sometimes we want to enable our servers/desktops to be able to send email without setting up a full featured mail server or configuring postfix to route through Gmail.
sSmtp is an extremely simple, resource conserving, SMTP server that will allow your desktop or server to send email. In this article we are going to use sSMTP to send outgoing email through Gmail.
Install sSMTP
Debian/Ubuntu users can Install with this command or click here to open up apt:
sudo apt-get install ssmtp
We need to then need to edit, ‘/etc/ssmtp/ssmtp.conf’:
root=username@gmail.com mailhub=smtp.gmail.com:587 rewriteDomain= hostname=username@gmail.com UseSTARTTLS=YES AuthUser=username AuthPass=password FromLineOverride=YES
Then add each account that you want to be able to send mail from by editing, ‘/etc/ssmtp/revaliases‘:
root:username@gmail.com:smtp.gmail.com:587 localusername:username@gmail.com:smtp.gmail.com:587
Now try sending an email
You can send an email through your favorite email client, like ‘mutt’, or type:
sudo ssmtp someemail@email.com
You will then type your message, hit enter and ‘ctrl+d‘
Now that you have a simple outgoing email server setup, you can do all sorts of neat things:
- Configure cron jobs to send log reports to your email address
- Alert you of all kinds of system changes
- Send email alerts when your computer reaches a certain temperature
- Send email through PHP, Python, Ruby, and Perl
Setting the MAILTO variable
Cron relies on a simple text file to schedule commands. To edit this file just issue the crontab command:
crontab -e
To change the MAILTO variable just add ‘MAILTO=username@domain.com’ into the crontab file.
It should look something like this:
Specify Email for Each Script
If we don’t want all output to go to the same email address we can specify the output of a particular script to go to a different email address:
59 */6 * * * script.sh | mail -s "Subject of Mail" someother@address.com
Email Alerts for All but One
If you have a specific script in your crontab that you don’t want output or errors emailed to you, simply add, ‘>/dev/null 2>&1’ to the end of the command.
59 */6 * * * script.sh >/dev/null 2>&1
To find out what else you can do with cron check out, Learning Cron by Example.
Based On:
1 comment:
THANKS FOR SHARING SUCH A GREAT WORK
GOOD CONTENT!!
structured cabling service
Post a Comment