Назад | Перейти на главную страницу

Обнаруживать и отправлять по электронной почте новые строки в текстовом файле в Linux

Вот этот файл журнала, за которым мы хотели бы следить. Обычно он не получает никаких обновлений. Но один или два раза в неделю он обновляется, и когда мы хотим получать уведомления об этом.

Есть ли способ регулярно проверять (задание cron) и обнаруживать изменения в таком текстовом файле, а также чтобы Linux отправлял электронное письмо об изменении. Также было бы здорово, если бы в электронном письме были новые строки, но мы можем жить и без последнего желания.

Для быстрой системы тестирования содержимого файлов я бы рекомендовал использовать Monit и его сервисный тест файлового контента. По умолчанию демон Monit будет проверять каждые 30 или 60 секунд (настраивается), но это простой способ сделать то, что вы просите. Кроме того, легко настроить уведомление по электронной почте или другое действие.

Их пример:

  check file syslog with path /var/log/syslog
    ignore match 
        "^\w{3} [ :0-9]{11} [._[:alnum:]-]+ monit\[[0-9]+\]:"
    ignore match /etc/monit/ignore.regex
    if match 
        "^\w{3} [ :0-9]{11} [._[:alnum:]-]+ mrcoffee\[[0-9]+\]:"
    if match /etc/monit/active.regex then alert

Если вы используете Nagios, взгляните на check_logfiles плагин:

Name       : check_logfiles
Arch       : x86_64
Version    : 3.4.2
Release    : 1.el5.rf
Size       : 167 k
Repo       : installed
Summary    : Logfile check  plugin for nagios
URL        : http://sourceforge.net/projects/check-logfiles
License    : GPL
Description: check_logfiles is a plugin for Nagios which searches for patterns in logfiles. It is capable of scanning
           : multiple logfiles and their rotated ancestors in a single run.

Например:

# /usr/lib64/nagios/plugins/check_logfiles --logfile='/var/log/mysqld.log' --criticalpattern='is marked as crashed'

OK - no errors or warnings|default_lines=0 default_warnings=0 default_criticals=0 default_unknowns=0