Як автоматично генерувати і електронної пошти комп'ютерної статистики
Важливо щодня перевіряти різні дані журналу та статистику на вашому сервері, але вони стають нудними. Чи не було б приємно отримувати одну електронну пошту з усіма важливими повідомленнями щодня, так що вам навіть не потрібно заходити на сервер, щоб перевірити наявність проблем? Це керівництво покаже вам, як налаштувати автоматизовані повідомлення електронної пошти в Linux і Windows.
Ми спеціально розглянемо це для Ubuntu і Windows 8.1, Gmail буде використовуватися як поштовий сервер, з якого надсилається пошта. Якщо ви маєте іншу версію Linux або Windows, або волієте використовувати іншу послугу електронної пошти, інструкції тут повинні бути легко адаптовані.
Автоматизовані електронні листи в Linux
Для цього ми використовуємо два різних пакунка: ssmtp і mailutils, тому встановіть обидві з наступною командою:
$ sudo apt-get встановлює ssmtp mailutils
Після інсталяції потрібно внести деякі зміни до файлу конфігурації SSMTP:
$ sudo vi /etc/ssmtp/ssmtp.conf
Відредагуйте файл із цими змінами (можна просто видалити весь текст у файлі та скопіювати / вставити ці налаштування, якщо хочете):
# Ця адреса буде отримувати електронні листи, тому введіть власну електронну пошту, якщо ви хочете отримати її.
# Вкажіть тут сервер електронної пошти (залиште, як і якщо ви використовуєте Gmail).
mailhub = smtp.gmail.com: 587
# Доменне ім'я, з якого буде надходити пошта.
rewriteDomain = gmail.com
# Адреса електронної пошти, з якої повинні надходити ці електронні листи.
# Параметри SSL / TLS, необхідні для Gmail та більшості інших поштових серверів.
UseTLS = Так
ВикористовуватиSTARTTLS = Так
# Ім'я користувача та пароль для вашого облікового запису Gmail.
AuthUser = ім'я користувача
AuthPass = пароль
# Дозволити вказувати адресу, відмінну від вказаної вище.
FromLineOverride = так
Коли ви закінчите редагування файлу, ви захочете змінити дозволи, оскільки ваш пароль Gmail зберігається у відкритому тексті.
$ sudo chmod 640 /etc/ssmtp/ssmtp.conf
$ sudo chown ім'я користувача.ім'я /etc/ssmtp/ssmtp.conf
Завжди безпечніше зробити кореневого користувача власником файлу, але тоді нам потрібно буде скористатися командою sudo в нашому скрипті, і це буде підказувати нам пароль, тим самим перемагаючи мета автоматизації всього цього процесу..
Якщо ви користуєтеся спільним сервером і стурбовані тим, що ваш пароль зберігається у відкритому тексті та читається за допомогою root, створіть обліковий запис Gmail або використовуйте сервер електронної пошти, який не вимагає жодного аутентифікації.
Щоб переконатися, що все налаштовано правильно, спробуйте тестове електронне повідомлення:
$ echo "Тестування" | mail -s "Налаштування тестування пошти" [email protected]
"Тестування" буде розміщено в тілі електронної пошти, а темою буде "Перевірка налаштувань пошти". Перевірте свою електронну пошту, щоб переконатися, що ви її отримали..
Написання сценарію для електронних листів
Тепер, коли ми можемо надсилати електронні листи з командного рядка, напишемо скрипт, який надішле нам деяку основну інформацію про нашу систему.
#! / bin / bash
# Перевірте місце на жорсткому диску
echo "Місце на жорсткому диску:"> /home/geek/email.txt
df -h >> /home/geek/email.txt
# Перерахуйте користувачів, які увійшли до системи
echo "Користувачі, що ввійшли в систему:" >> /home/geek/email.txt
хто >> /home/geek/email.txt
# Перелік поточних запущених процесів
echo "Запуск процесів:" >> /home/geek/email.txt
ps -e >> /home/geek/email.txt
# Надіслати електронний лист
cat /home/geek/email.txt | mail -s "Щоденна інформація про сервер" [email protected]
# Видалити файл, який ми створили
rm /home/geek/email.txt
Очевидно, ви можете отримати набагато більше поглибленого сценарію і навіть зробити форматування трохи приємнішим, але це виглядає так, як виходить у нашому листі:
Тепер, коли скрипт написаний і перевірений, ми можемо використовувати cron для автоматичного виконання його в один і той же час кожного дня. У цьому прикладі ми налаштуємо повідомлення електронної пошти, яке надсилатиметься о 2 годині ранку кожного ранку, щоб ми могли переглядати дані пізніше цього дня.
$ crontab -e
За 2 години електронної пошти додайте:
0 2 * * * /home/geek/script.sh
Ми написали цілу статтю про файли crontab, якщо вам потрібна додаткова допомога з цією частиною.
Автоматизовані електронні листи в Windows
Надсилання електронних листів за допомогою командного рядка можливе за допомогою PowerShell, але ми виявили, що реалізація цієї функціональності значно полегшується додатками третіх сторін, особливо при використанні Gmail. SendEmail - безкоштовна програма, доступна для Windows, що робить інтеграцію з Windows Task Scheduler і Gmail легким. Натисніть посилання, щоб завантажити останню копію, і переконайтеся, що ви скористалися підтримкою TLS версії.
Як тільки ви завантажили SendEmail, витягніть zip-файл і помістіть вміст де-небудь, що ви можете зберегти їх до тих пір, поки ви плануєте надсилати автоматизовані повідомлення. У цьому прикладі ми просто збираємося зберігати програму в C: SendEmail
Давайте перевіримо SendEmail, щоб швидко відчути, як він працює. Відкрийте командний рядок, набравши cmd у меню Пуск або Виконати (Ctrl + R).
Відкривши командний рядок, скористайтеся командою change directory, щоб перейти до місця збереження файлів SendEmail.
cd C: SendEmail
Тепер ми можемо спробувати надіслати тестове повідомлення електронної пошти наступною командою:
sendEmail -f [email protected] -t [email protected] -s smtp.gmail.com:587 -xu ім'я користувача -xp пароль -u "Тест тему електронної пошти" -m "Це тестова електронна пошта."
Очевидно, замінити "ім'я користувача" та "пароль" обліковими даними облікового запису, перш ніж виконувати команду.
Нижче наведена наведена вище команда:
відправити лист
виконує програму.
-f
- з адреси
-t
- адресувати
-s
- Сервер SMTP
-xu
- ім'я користувача облікового запису
-xp
- пароль облікового запису
-u
- тему електронної пошти
-m
- текст основного листа
Перевірте свою поштову скриньку, щоб переконатися, що ви отримали тестову електронну пошту, а потім ми можемо перейти до написання скрипту, який надішле нам інформацію про сервер.
Написання сценарію для електронних листів
Щоб отримати максимальну віддачу від нашого сценарію, ми напишемо його для PowerShell. Відкрийте Windows PowerShell ISE, ввівши powershell_ise.exe у рядок запуску (Ctrl + R).
У правій частині вікна PowerShell ISE можна вказати всі команди, які PowerShell може виконати. Це повинно дати вам гарний початок у створенні типів інформації, які вам потрібно повідомити. У вашому сценарії також можна закликати програми сторонніх виробників також виводити інформацію (наприклад, SendEmail - це додаток третьої сторони, але PowerShell і cmd можуть використовувати його для виконання завдань, які вони зазвичай не можуть).
У нашому прикладі сценарію ми перевіримо поточне використання диска C, покаже поточні запущені процеси та покажемо всі файли, які наразі розділяються в мережі.
# Перевірте місце на жорсткому диску
echo "C: Використання диска:"> C: SendEmail info.txt
Get-WmiObject win32_LogicalDisk -Filter "DeviceID = 'C:'" | Розмір вибору об'єкта, FreeSpace >> C: SendEmail info.txt
# Перелік поточних запущених процесів
echo "Запуск процесів:" >> C: SendEmail info.txt
get-process >> C: SendEmail info.txt
# Перерахуйте файли / папки, які в даний час спільно використовуються
echo "SMB:: C: SendEmail info.txt
get-smbshare >> C: SendEmail info.txt
# Надіслати електронний лист
тип C: SendEmail info.txt | SendEmail -f [email protected] -t [email protected] -s smtp.gmail.com:587 -xu ім'я користувача -xp пароль -u "Щоденна інформація про сервер"
# Видалити файл, який ми зробили
rm C: SendEmail info.txt
У цьому сценарії до C виводиться різноманітна інформація: SendEmail info.txt, а потім текст у цьому документі надсилається нам до того, як він буде видалений. Збережіть скрипт з розширенням файлу ps1 (файл PowerShell).
Завершивши сценарій, запустіть швидкий тест із запиту Run, щоб переконатися, що він працює належним чином.
Просто використовуйте PowerShell
з командою a -файл
аргумент і вказати шлях до сценарію.
"c:" "Відправити електронну пошту \ t
Перевірте свою поштову скриньку, щоб переконатися, що ви отримали електронну пошту - якщо ні, то перегляньте сценарій для помилок синтаксису. Ось як виглядає згенерований лист із нашого прикладу:
Ви можете грати з форматуванням (наприклад, повторюючи порожні рядки між текстом), щоб зробити його краще відображатися на вашому пристрої, або ще краще, ви можете використовувати програму третьої сторони, яка буде виводити необхідну інформацію в більш зручному для читання форматі, ніж Windows ( процес створення сценаріїв все одно буде.
Як тільки ви розробили перегини у вашому сценарії, ви можете використовувати Windows Task Scheduler для автоматизації. Відкрийте Планувальник завдань Windows за допомогою меню Пуск.
Після відкриття планувальника завдань виберіть Дія> Створити основну задачу.
Назвіть це завдання щось на зразок "Щоденний скрипт електронної пошти" та натисніть кнопку Далі. На наступному екрані виберіть частоту, з якою ви хочете, щоб сценарій електронної пошти працював, ймовірно, щодня. Потім виберіть час, коли ви хочете запустити скрипт, і натисніть кнопку Далі.
Тепер ви повинні бути в частині "Дія" майстра, виберіть "Запустити програму" і введіть той самий текст, який ми ввели в попередній запит Виконати, щоб перевірити наш сценарій.
Натисніть кнопку "Далі" та натисніть "Так" у цьому вікні:
Натисніть "Готово" в останньому меню, і ви завершите планування автоматичних повідомлень електронної пошти.