Мы специально рассмотрим это для Ubuntu и Windows 8.1, причем Gmail используется как почтовый сервер, с которого отправляется почта. Если у вас есть другая версия Linux или Windows или предпочитаете использовать другую службу электронной почты, инструкции здесь должны быть легко адаптированы.
Автоматизированные электронные письма в Linux
Мы собираемся использовать два разных пакета для этого, 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 и 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 в приглашение Run (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 для его автоматизации. Откройте Планировщик задач Windows через меню «Пуск».
Теперь вы должны быть в разделе «Действие» мастера, выберите «Запустить программу» и введите тот же текст, который мы ввели в приглашение «Запуск» ранее, чтобы протестировать наш скрипт.