извлечение информации из файла журнала и отправка уведомления по электронной почте с использованием Python - PullRequest
1 голос
/ 13 марта 2012

Я работаю над проектом для работы, которая требует от меня извлечения информации из лог-файла и отправки уведомления каждый раз, когда он находит конкретную информацию.Например, точная проблема, над которой я работаю, заключается в том, что мне нужно создать скрипт на python, который может проанализировать /var/log/auth.log (система FreeBSD) и вытащить все недопустимые попытки входа в SSH, а затем перейти к электронной почте и другимколлега в любое время, когда совершается преступление.

Я искал несколько дней и имел минимальный успех, любая помощь будет принята с благодарностью.

Ответы [ 3 ]

1 голос
/ 13 марта 2012

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

Из fail2ban вики:

Fail2ban сканирует файлы журналов (например, / var / log / apache / error_log) и блокирует IP-адреса которые показывают вредоносные признаки - слишком много сбоев паролей, ищущих для эксплойтов и т. д. Обычно Fail2Ban затем используется для обновления брандмауэра правила отклонения IP-адресов в течение определенного периода времени, хотя любое другое произвольное действие (например, отправка электронного письма , или также можно настроить лоток для извлечения компакт-диска). Из коробки Fail2Ban поставляется с фильтрами для различных сервисов (apache, curier, ssh , и т.д.).

Это, вероятно, сработает лучше, чем любое решение, которое вы сами испекли.


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

Более разумным способом является использование службы мониторинга файлов операционной системы, которая подключается к драйверу файловой системы и уведомляет вас, как только файл изменяется. Это дает двойное преимущество: ваш код будет занимать меньше процессорного времени, и он будет реагировать немедленно при изменении файла.

В Linux служба называется inotify. BSD и Windows имеют эквивалентную функцию.

0 голосов
/ 13 марта 2012

Как грубая идея для работы cron:

with open('/var/log/auth.log') as auth:
    for line in auth:
        if 'blahblah' in line:
            # send email

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

0 голосов
/ 13 марта 2012

Вы можете запускать задание cron каждые несколько минут, которое проверяет изменения в этом файле.Если есть какие-либо изменения, он отправит вам электронное письмо, например, smtplib.Вот пример использования smtplib с sendgrid: http://docs.sendgrid.com/documentation/get-started/integrate/examples/python-email-example-using-smtp/

Как узнать, был ли файл изменен?

  1. Вы сохраняете копию файла, как он выглядел взапустить предыдущий скрипт и сравнить его с текущим содержимым
  2. Вы проверяете время последнего изменения файла .

Это просто общая идея, которая может бытьнастроены, и все «ингредиенты» можно найти в Google, так что вы должны быть в состоянии реализовать это, прибегая к помощи Google.

Надеюсь, это поможет.

...