Ubuntu. Отправка отчетов об ошибках из файла syslog на электронную почту.

  • Автор записи:
  • Рубрика записи:Linux
  • Комментарии к записи:0 комментариев

Что бы отправлять сообщения электронной почты из Ubuntu, установим утилиту mutt

apt install mutt

Отредактируем конфигурационный файл mutt, что бы настоить SMTP сервер для отправки сообщений

vi ~/.muttrc

Внесем следующую строку и сохраним файл. Для примера мы будем использовать SMTP сервер mail.ru без авторизации

set smtp_url="smtp://smtp.mail.ru:25"

Для отправки сообщений через SMTP сервер с авторизацией пользователя нужно внести следующие данные

set smtp_url="smtp://smtp_user@smtp.mail.ru:465"
set smtp_pass = password
set ssl_verify_host = no
set ssl_verify_dates = no
set ssl_starttls = no
set ssl_force_tls = yes
  • smtp_user — имя учетной записи, под которой нужно авторизоваться на SMTP.
  • smtp_pass — пароль для аутентификации.
  • ssl_verify_host — нужно ли проверять валидность сертификата.
  • ssl_verify_dates — нужно ли проверять дату действия сертификата.
  • ssl_starttls — нужно ли использовать STARTTLS (обычно, при подключении по порту 587).
  • ssl_force_tls — нужно ли использование SSL/TLS (обычно, при подключении по порту 465).

Создадим новую директорию /scripts в корне и внутри нее создадим скрипт для отправки отчетов об ошибках.

mkdir /scripts
vi /scripts/emailerrorlog.sh

Копируем в файл следующее содержимое

# !/bin/bash
# Определяем имя хоста
HOSTNAME=`hostname`
# Установим переменную, равную нулю
prev_count=0
count=$(grep -i "`date --date='yesterday' '+%b %e'`" /var/log/syslog | egrep -wi 'warning|error|critical' | wc -l)
if [ "$prev_count" -lt "$count" ] ; then
# Отправляем письмо на указанный адрес электронной почты, если в журнале обнаружены ошибки.
SUBJECT="WARNING: Errors found in log on $HOSTNAME `date --date='yesterday' '+%b %e %Y'`"
# Это временный файл, созданный для хранения сообщения электронной почты.
MESSAGE="/tmp/logs.txt"
# Указываем адрес, куда будем отправлять отчеты
TO="no-spam@it-manager.pro"
echo "ATTENTION: Errors are found in /var/log/messages. Please Check with Linux admin." >> $MESSAGE
echo "Hostname: $HOSTNAME" >> $MESSAGE
echo -e "\n" >> $MESSAGE
echo "+------------------------------------------------------------------------------------+" >> $MESSAGE
echo "Error messages in the log file as below" >> $MESSAGE
echo "+------------------------------------------------------------------------------------+" >> $MESSAGE
grep -i "`date --date='yesterday' '+%b %e'`" /var/log/syslog | awk '{ $3=""; print}' | egrep -wi 'warning|error|critical' >> $MESSAGE
cat $MESSAGE | mutt -s "$SUBJECT" -- "$TO"
rm $MESSAGE
fi

Добавим разрешение на запуск скрипта

chmod +x /scripts/emailerrorlog.sh

Добавляем задачу в cron, чтобы скрипт выполнялся автоматически. Он будет срабатывать каждый день в 00 часов.

vi /etc/crontab

В конец файла добавляем строку

0 0 * * * root /scripts/emailerrorlog.sh

Для лучшего понимания планировщика cron рекомендую посмотреть сайт Crontab Guru

Добавить комментарий