Как сделать cron для отправки отчета по электронной почте, только если есть что сообщить?

1462
user398140

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

это моя рабочая линия cron

1 0 * * * root /sbin/aureport -k -ts yesterday 00:00:00 -te yesterday 23:59:59 

и это письмо, которое я обычно получаю

Key Report =============================================== # date time key success exe auid event =============================================== <no events of interest were found> 
0

2 ответа на вопрос

0
Antony

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

так что ваш cron вызывает ваш скрипт

01 00 * * * sh /bin/script.sh 

этот скрипт с именем "script.sh" похож на следующий, сохраненный в папке / bin /

Альтернативный ответ

 #!bin/bash /sbin/aureport -k -ts yesterday 00:00:00 -te yesterday 23:59:59 > /dev/shm/auditcheck.log  if [ -z "$(grep "no events of interest were found" /dev/shm/auditcheck.log)" ]; then /sbin/aureport -k -ts yesterday 00:00:00 -te yesterday 23:59:59 else > /dev/null 2>&1 fi 

Этот отредактированный / альтернативный сценарий сохраняет выходные данные aureport, а затем обрабатывает выходные данные, чтобы найти фразу no events, используя строку -z, чтобы дать True, если длина строки равна нулю. поэтому, если фраза «интересующие вас события не найдены» отсутствует, запустите аудиторский отчет. В противном случае перенаправьте вывод вашей программы в / dev / null. Включите как стандартную ошибку, так и стандартную ошибку.

да, но /var/log/audit/audit.log файл постоянно меняется с некоторыми записями, которые не имеют отношения к тому aureport, который проверяет только для конкретного, мне интересно, можем ли мы запустить, сначала захватить его вывод и проверить, если вывод содержит строка и если да, то распечатать? user398140 9 лет назад 0
@ user398140 исправленный ответ на основе вашего комментария Antony 9 лет назад 0
0
dxdc

Возможно, более простой, модифицированный подход, который все еще может быть выполнен в одной строке cron (/etc/cron.d/audit-report):

1 0 * * * root /sbin/aureport -k -ts yesterday 00:00:00 -te yesterday 23:59:59 | /bin/grep -q "^<no events of interest were found>" || /sbin/aureport -k -ts yesterday 00:00:00 -te yesterday

Похожие вопросы