В этой статье мы рассмотрим, как заставить Linux отправлять оповещения по электронной почте при выполнении определенного условия. Мы предполагаем, что вы являетесь пользователем среднего или продвинутого уровня (которым вы и должны быть, если хотите настроить оповещения по электронной почте в Linux) и что у вас уже установлен почтовый клиент.
Отправка оповещений по электронной почте может быть очень полезной. Например, если в фоновом режиме выполняется большая сборка, нет смысла ждать завершения процесса. В таких случаях вы можете попросить Linux отправить вам сообщение после завершения сборки. Это экономит вам много времени. Вы также можете получить уведомление по электронной почте в определенное время. Если у вас запланировано вечернее мероприятие, вы можете запрограммировать его в Linux, чтобы не забыть!
Для начала давайте кратко рассмотрим, как можно отправить электронное письмо самому себе. Команда для него — «mailx
» или «mail
». Эта команда может отличаться в вашей системе, в зависимости от версии Linux, которую вы используете (и она будет работать только в том случае, если сервер настроен правильно). Синтаксис команды:
mailx -s "your subject" recipient@provider.com <<< "your message"
При желании вы также можете прикрепить к этому файл
mailx -s "your subject" recipient@provider.com < filename.txt
Также читайте: 9 лучших почтовых клиентов для Linux
Как заставить Linux отправлять оповещения по электронной почте
Теперь мы можем связать использованную выше команду с условным оператором. Это означает, что когда условие будет выполнено, вам будет отправлено электронное письмо. Введите в командной строке следующее:
condition_when_done date | mailx -s "subject" youremail@provider.com <<< "your message"
Это можно сделать и другим способом. Давайте посмотрим на другой пример. Что, если вы ждете ответа от сервера? Вы можете либо продолжать вводить команды в оболочке, либо получать оповещение по электронной почте, когда сервер просыпается. Вы можете использовать эту команду, например:
while :; do date; ping -c1 servername && break; \done; mail
Если присмотреться, приведенный выше код представляет собой бесконечный цикл. Когда ваша система проверяет связь с сервером (имя_сервера), цикл прерывается, и вам будет отправлено письмо. Вам не нужно ждать, пока сервер загрузится или обновится.
Если вас беспокоит расход системных ресурсов, вы можете перевести систему в спящий режим, немного изменив команду:
while :; do date; ping -c1 servername && break; sleep 200; \done; mail
В этом случае компьютер будет спать 200 секунд, прежде чем выполнит новый цикл. Таким образом, вы также будете получать регулярное оповещение (о том, что цикл работает) каждые несколько секунд.
В качестве условия можно использовать практически любую команду оболочки (при условии, что она разумна и не перегружает вашу систему):
while :; do date; the_command_to_be_executed && break; \done; mail
Что, если вы хотите отправить себе электронное письмо в определенный день и в определенное время? Вы можете немного изменить команду выше:
while [ date +"%T" -gt '06:00:00']; do date; the_command_to_be_executed && break; \done; mail
Если вы хотите получать уведомления всякий раз, когда получаете электронное письмо в вашей системе Linux, вы можете установить приложения, поддерживающие уведомления по электронной почте. Двумя наиболее популярными приложениями являются PopTray Минус и Почтовое уведомление .
Вы можете поэкспериментировать с приведенными выше командами. Идея проста: просто создайте условие, при выполнении которого будет отправлено оповещение по электронной почте. Если вам нужна дополнительная информация или помощь по использованию mailx, просто введите «mailx --help
», чтобы отобразить список справки.
Изображение предоставлено: флаг смокинг Linux пингвин красный размахивая , серый почтовый конверт белое почтовое письмо , напоминание о памяти, напоминание, контроль размеров