Я создал скрипт из того, что нашел в Интернете, чтобы уведомлять SA о добавлении пользователей на сервер. Я настроил его с cron для запуска скрипта каждые 5 минут для отслеживания различий в файле /var/log/secure, но он все равно отправляет пустое письмо, если ничего не изменилось. Как мне отредактировать его, чтобы не отправлять письмо, если никаких изменений не было. Скрипт ниже:
file="/var/log/secure"
while cmp "$file" "${file}_bkp"; do
sleep 2
done
diff "$file" "${file}_bkp" | grep -e useradd | mailx -s "User Added On Server" [email protected]
cp "$file" "${file}_bkp"
решение1
Я согласен с комментарием, что более производительный метод проверки — это мониторинг файла /etc/passwd
вместо анализа файла журнала, который может быть потенциально большим и интенсивным для обработки. Если обнаружено, /etc/passwd
что файл изменился, вы можете сделать diff резервной копии файла, чтобы увидеть, что изменилось.
Быстрый пример, который вы можете настроить в соответствии со своими потребностями.
# One-off initial Set up
md5 -q /etc/passwd > /etc/passwd.md5
cp /etc/passwd /etc/passwd.compare
# Cron job script logic
if [[ $(md5 -q /etc/passwd) != $(< /etc/passwd.md5) ]]
then
# The passwd file has changed, do something!
#
# Diff /etc/passwd with /etc/passwd.compare to get details, etc.
# Send an alert with details
#
# Prepare for the next time a change happens.
md5 -q /etc/passwd > /etc/passwd.md5
cp -f /etc/passwd /etc/passwd.compare
#
fi