Использование локальной почты в качестве инструмента уведомления


Использование локальной почты в качестве средства уведомления

Сообщение создано в 2022-05-04 14:25

Я использую для запуска команд и разработки в терминале linux, и имею некоторые запланированные задачи, выполняемые в фоновом режиме.

Мне нужно получать уведомления на терминале о некоторых завершенных процессах в общем виде, без использования GUI уведомлений.

По умолчанию, каждое задание cron, которое пишет в консоль, отправляется на локальную почту пользователя. Таким образом, локальная почта будет моим хранилищем уведомлений.

Установка

Я использовал эту настройку в Ubuntu, но она должна работать в любом дистрибутиве.

  1. Добавление текущего пользователя в почтовую группу
$ sudo adduser $USER mail
Adding user 'guionardo' to group 'mail' ...
Adding user guionardo to group mail
Done.
Вход в полноэкранный режим Выход из полноэкранного режима
  1. Установите mailtools, postfix и mutt
$ sudo apt install mailtools postfix mutt
Войдите в полноэкранный режим Выйти из полноэкранного режима
  1. Отправьте тестовое письмо
$ echo "This is a test" | mail "--subject=Test email" $USER@localhost
Войти в полноэкранный режим Выйти из полноэкранного режима
  1. Проверить новую почту
$ mail
"/var/mail/guionardo": 1 message 1 new
>N 1 Guionardo Furlan qua mai 4 17:41 14/464 Test email
? q
Held 1 message in /var/mail/guionardo
Войти в полноэкранный режим Выйти из полноэкранного режима

Итак, в наш почтовый ящик пришло письмо. Давайте прочитаем его с помощью лучшего инструмента.

$ mutt
Войти в полноэкранный режим Выйти из полноэкранного режима
q:Quit d:Del u:Undel s:Save m:Mail r:Reply g:Group ?:Help
 1 O F mai 04 To guionardo@lo ( 2) Test email



---Mutt: /var/mail/guionardo [Msgs:1 Old:1 0,6K]---(threads/date)----(all)---
Войти в полноэкранный режим Выход из полноэкранного режима
i:Exit -:PrevPg <Space>:NextPg v:View Attachm. d:Del r:Reply j:Next ?:He
Date: Wed, 4 May 2022 17:41:20 +0000 (UTC)
From: Guionardo Furlan <guionardo@furlan-server>
To: guionardo@localhost
Subject: Test email
X-Mailer: mail (GNU Mailutils 3.7)

This is a test


-O F- 1/1: Guionardo Furlan Test email -- (all)
Войти в полноэкранный режим Выход из полноэкранного режима
  1. Настройка уведомлений

Добавьте это содержимое в ваш ~/.profile или эквивалентный файл (.bashrc, .zshrc и т.д.):

MAIL_CHECK_TIME=0
mail_prompt() {
 local pwd='~'
 local MAIL_SECONDS_DIFF=$MAILCHECK

 local MAIL_ELAPSED_SECONDS=$((SECONDS - MAIL_CHECK_TIME))

 [ "$PWD" != "$HOME" ] && pwd=${PWD/#$HOME//~/}

 printf "033]0;%s@%s:%s033%s" "${USER}" "${HOSTNAME%%.*}" "${pwd}"

 if [[ "$MAIL_CHECK_TIME" -eq "0" || "$MAIL_ELAPSED_SECONDS" -gt "$MAIL_SECONDS_DIFF" ]]; then
 local MAILX="$(mailx 2>/dev/null &)"
 UNREADEN_REGEX="s([0-9]{1,4})sn"
 [[ $MAILX =~ $UNREADEN_REGEX ]] && UNREADEN=$(echo "${BASH_REMATCH[1]}") || UNREADEN=0
 local COUNT=$((UNREADEN))
 local MESSAGE_TEXT="message"
 if [ "$COUNT" -gt "0" ]; then
 if [ "$COUNT" -gt "1" ]; then
 MESSAGE_TEXT="messages"
 fi
 echo "$COUNT unreaden $MESSAGE_TEXT. Run mutt"
 fi
 MAIL_CHECK_TIME=$SECONDS
 fi

}

if [[ $(which mailx) ]]; then
 PROMPT_COMMAND="mail_prompt"
fi
Войти в полноэкранный режим Выйти из полноэкранного режима
  1. Закройте и снова откройте терминал, чтобы загрузить эту конфигурацию.
  2. Теперь, когда вы обращаетесь к терминалу, сообщения, не считанные, будут показывать подсказку:
1 unreaden message. Run mutt
Войти в полноэкранный режим Выйти из полноэкранного режима

В ваших пользовательских сценариях вы можете отправить электронное письмо локальному пользователю и получить уведомление.

Оцените статью
Procodings.ru
Добавить комментарий