Ще обръщаме специално внимание на това за Ubuntu и Windows 8.1, като Gmail ще се използва като пощенски сървър, от който се изпраща пощата. Ако имате друга версия на Linux или Windows или предпочитате да използвате друга услуга за електронна поща, инструкциите тук трябва лесно да се приспособят.
Автоматизирани имейли в Линукс
Ще използваме два различни пакета, за да постигнем това, ssmtp и mailutils, така че инсталирайте и двете от тях със следната команда:
$ sudo apt-get install ssmtp mailutils
Веднъж инсталирани, трябва да направим някои промени в конфигурационния файл на SSMTP:
$ sudo vi /etc/ssmtp/ssmtp.conf
Редактирайте файла с тези промени (е безопасно просто да изтриете целия текст във файла и да копирате / поставите тези настройки, ако искате):
# This address will receive the emails, so enter your own email here if you want to receive them.
# Specify the email server here (leave as is if you’re using Gmail).
mailhub=smtp.gmail.com:587
# The domain name that the mail will come from.
rewriteDomain=gmail.com
# The email address that these emails should be from.
# SSL/TLS settings, required for Gmail and most other mail servers.
UseTLS=Yes
UseSTARTTLS=Yes
# The username and password to your Gmail account.
AuthUser=username
AuthPass=password
# Allow the ability to specify a from address different than the one above.
FromLineOverride=yes
Когато приключите с редактирането на файла, ще искате да промените разрешенията, тъй като паролата ви в Gmail се съхранява в текста.
$ sudo chmod 640 /etc/ssmtp/ssmtp.conf
$ sudo chown username.username /etc/ssmtp/ssmtp.conf
Винаги е по-сигурно коренът на собственика на файла, но тогава ще трябва да използваме командата sudo в нашия скрипт и това би ни подсказало за парола, като по този начин победихме целта да автоматизираме целия този процес.
Ако използвате споделен сървър и се притеснявате, че паролата ви ще бъде съхранена в текстов формат и четена от root, създайте акаунт в Gmail или използвайте сървър за електронна поща, който не изисква никакъв тип удостоверяване на първо място.
За да се уверите, че всичко е конфигурирано правилно, опитайте да тествате имейл:
$ echo 'Testing' | mail -s 'Testing mail setup' [email protected]
"Тестване" ще бъде в тялото на имейла и темата ще бъде "Тестване на настройките на пощата". Проверете имейла си, за да сте сигурни, че сте го получили.
Писане на скрипт за имейлите
Сега, когато можем да изпращаме имейли от командния ред, нека да напишем скрипт, който ще ни изпрати някаква основна информация за нашата система.
#!/bin/bash
# Check hard drive space
echo 'Hard drive space:' > /home/geek/email.txt
df -h >> /home/geek/email.txt
# List the users that are logged in
echo 'Users currently logged in:' >> /home/geek/email.txt
who >> /home/geek/email.txt
# List currently running processes
echo 'Running processes:' >> /home/geek/email.txt
ps -e >> /home/geek/email.txt
# Send the email
cat /home/geek/email.txt | mail -s 'Daily server information' [email protected]
# Delete the file we created
rm /home/geek/email.txt
Очевидно можете да получите много по-задълбочено с вашия скрипт и дори да направите форматирането малко по-хубаво, но това е как изглежда изходът в нашия имейл:
$ crontab -e
За имейли от 2:00 ч. Добавете:
0 2 * * * /home/geek/script.sh
Написахме цяла статия за файловете crontab, ако имате нужда от повече помощ с тази част.
Автоматизирани имейли в Windows
Изпращането на имейли на командния ред е възможно чрез PowerShell, но открихме, че внедряването на тази функционалност е много по-лесно с приложенията на трети страни, особено при използването на Gmail. SendEmail е безплатна програма, налична за Windows, която прави интегрирането с Windows Scheduler Task Scheduler и Gmail лек. Кликнете върху връзката по-горе, за да изтеглите последното копие и се уверете, че сте грабнали версията, поддържана от TLS.
След като изтеглите SendEmail, извадете zip файла и поставете съдържанието някъде така, че да можете да ги съхранявате толкова дълго, колкото планирате да изпращате автоматизирани имейли. В този пример ние просто ще съхраняваме програмата в C: SendEmail
Нека да тестваме SendEmail, за да можем бързо да разберем как работи. Отворете командния ред, като въведете cmd в менюто Старт или Изпълнение (Ctrl + R).
cd C:SendEmail
Сега можем да опитаме да изпратим тестов имейл със следната команда:
sendEmail -f [email protected] -t [email protected] -s smtp.gmail.com:587 -xu username -xp password -u 'Test email subject' -m 'This is a test email.'
Очевидно заменете "потребителско име" и "парола" с идентификационните данни на профила си, преди да изпълните командата.
Ето какво всъщност прави командата по-горе:
sendEmail
изпълнява програмата.
-f
- от адрес
-t
- на адрес
-s
- SMTP сървър
-xu
- потребителско име за профила
-xp
- парола за акаунта
-u
- тема на имейла
-m
Текст на текста на електронната поща
Проверете входящата си поща, за да сте сигурни, че сте получили тестовия имейл, и след това може да преминете към написването на скрипт, който ще ни изпрати информация за сървъра.
Писане на скрипт за имейлите
За да извлечете максимума от нашия скрипт, ще го напишем за PowerShell. Отворете Windows PowerShell ISE, като въведете powershell_ise.exe в подкана за изпълнение (Ctrl + R).
# Check hard drive space
echo 'C: Drive Usage:' > C:SendEmailinfo.txt
Get-WmiObject win32_LogicalDisk -Filter 'DeviceID='C:'' | Select-Object Size,FreeSpace >> C:SendEmailinfo.txt
# List currently running processes
echo 'Running processes:' >> C:SendEmailinfo.txt
get-process >> C:SendEmailinfo.txt
# List the files/folders currently being shared
echo 'SMB shares:' >> C:SendEmailinfo.txt
get-smbshare >> C:SendEmailinfo.txt
# Send the email
type C:SendEmailinfo.txt | C:SendEmailsendEmail -f [email protected] -t [email protected] -s smtp.gmail.com:587 -xu username -xp password -u 'Daily server info'
# Delete the file we made
rm C:SendEmailinfo.txt
В този скрипт се извежда различна информация в C: SendEmail info.txt, след което текстът в този документ е изпратен по имейл преди да бъде изтрит. Запазете скрипта си с разширение за файл ps1 (файл PowerShell).
С приключването на скрипта изпълнете бърз тест от подкана за изпълнение, за да се уверите, че работи правилно.
Просто използвайте
powershell
команда с
-file
аргумент и да посочите пътя към вашия скрипт.
powershell -file 'c:SendEmaildaily-email.ps1'
След като сте изработили скиците в скрипта си, можете да използвате Windows Task Scheduler, за да го автоматизирате. Отворете Windows Task Scheduler през менюто "Старт".
Сега трябва да сте в частта "Действие" на съветника, да изберете "Стартиране на програма" и да въведете същия текст, който въведохме в подкана за изпълнение, за да тествате скрипта.