Как я могу заставить cron отправлять аудит по электронной почте, только если есть что сообщить?
Я настраиваю ежедневную проверку работы 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>
2 ответа
Рекомендуем запустить скрипт из 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. Включите как стандартную ошибку, так и стандартную ошибку.
Возможно, более простой, модифицированный подход, который все еще может быть выполнен в одной строке 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