Мониторинг журнала и отправка сообщений с предупреждениями с помощью сценария оболочки в Linux

#linux #shell #email

#linux #оболочка #Адрес электронной почты

Вопрос:

Я создал файл .sh для записи определенных слов в журнал и отправлю письмо на определенный идентификатор электронной почты (установите Cronjob для запуска этого скрипта каждые 1 час). Он работает так, как ожидалось, но проблема в том, что если ошибки нет, я также получаю пустую почту.

Необходимо получить почту, если мы обнаружили ошибку, и в файле DBError есть содержимое. Пожалуйста, помогите мне решить эту проблему.

     #!/bin/bash

if [ ! -e DBErrors ] ; then
      grep "sqlException" /opt/apps/cms/logs/cms-runtime.log > DBErrors
      mail -s "ALERT: sqlException" Jayaram.Ponnusamy@gmail.com < DBErrors
else
  comm -23 <(grep "sqlException" /opt/apps/cms/logs/cms-runtime.log) DBErrors | mail -s "ALERT: sqlException" Jayaram.Ponnusamy@gmail.com
  grep "sqlException" /opt/apps/cms/logs/cms-runtime.log > DBErrors
fi
  

Спасибо
Джаярам

Комментарии:

1. Вы имеете в виду, что вам нужно электронное письмо, отправленное в if блоке или в else одном?

Ответ №1:

Не могли бы вы попробовать это;

 #!/bin/bash
dbErrors="/tmp/DBErrors"
if [ ! -e "$dbErrors" ]; then
        grep "sqlException" /opt/apps/cms/logs/cms-runtime.log > $dbErrors
        mailbody=$(grep "sqlException" /opt/apps/cms/logs/cms-runtime.log); [[ -n "$mailbody" ]] amp;amp; mail -s "ALERT: sqlException" Jayaram.Ponnusamy@gmail.com
else 
        mailbody=$(comm -23 <(grep "sqlException" /opt/apps/cms/logs/cms-runtime.log| sort -n) <(sort -n "$dbErrors")); [[ -n "$mailbody" ]] amp;amp; mail -s "ALERT: sqlException" Jayaram.Ponnusamy@gmail.com
        grep "sqlException" /opt/apps/cms/logs/cms-runtime.log > $dbErrors
fi 
  

Комментарии:

1. Извините, что все еще получаю пустую почту

2. @JayaramPonnusamy: Я обновил ans. не могли бы вы попробовать это;

3. Привет, Мустафа, все еще получаю то же «Пустое сообщение тела»