Добавил: Amro   Дата: 01.08.2025 13:15

Скрипт формирует отчет в измененных php файлах за последние 24 часа и отправляет его на почту (если изменения были)

#!/bin/bash

# Путь для сохранения логов
LOG_FILE="/var/log/php_changes.log"
# Email для отправки результатов
EMAIL="notify@myserver.ru"
# Тема письма
SUBJECT="Отчет об измененных PHP-файлах за последние 24 часа"
# Кодируем тему в base64 для RFC 2047
ENCODED_SUBJECT="=?UTF-8?B?$(printf "%s" "$SUBJECT" | base64 -w 0)?="
# Email отправителя
FROM="root@myserver.ru"

# Команда для поиска измененных PHP-файлов
FIND_COMMAND="find /var/www/*/data/www -type f -name '*.php' -mtime -1"

# Записываем дату и время проверки в лог
echo "=== Проверка изменений PHP-файлов: $(date) ===" >> "$LOG_FILE"

# Выполняем поиск и сохраняем результаты, логируем ошибки отдельно
CHANGED_FILES=$(bash -c "$FIND_COMMAND" 2>>"$LOG_FILE")
EXIT_CODE=$?

# Записываем статус выполнения команды find
echo "Код возврата find: $EXIT_CODE" >> "$LOG_FILE"
echo "Результаты поиска:" >> "$LOG_FILE"
echo "$CHANGED_FILES" >> "$LOG_FILE"

# Проверяем, были ли найдены файлы
if [ -n "$CHANGED_FILES" ]; then
    echo "Найдены измененные PHP-файлы. Подробности в $LOG_FILE" >> "$LOG_FILE"
    # Отправляем email с результатами через Exim
    /usr/sbin/exim -t <<EOF
To: $EMAIL
Subject: $ENCODED_SUBJECT
From: $FROM
Content-Type: text/plain; charset=UTF-8

Найдены измененные PHP-файлы за последние 24 часа. Список файлов:

$CHANGED_FILES
EOF
    if [ $? -eq 0 ]; then
        echo "Email успешно отправлен на $EMAIL" >> "$LOG_FILE"
    else
        echo "Ошибка при отправке email на $EMAIL" >> "$LOG_FILE"
    fi
else
    echo "Измененных PHP-файлов не найдено." >> "$LOG_FILE"
fi

# Добавляем пустую строку в лог для читаемости
echo "" >> "$LOG_FILE"

 

comments powered by HyperComments