- Added comprehensive AI Assistant system (aiassist/ directory): * Vector search and embedding capabilities * Typebot proxy integration * Elastic search functionality * Message classification and chat history * MCP proxy for external integrations - Implemented Court Status API (GetCourtStatus.php): * Real-time court document status checking * Integration with external court systems * Comprehensive error handling and logging - Enhanced S3 integration: * Improved file backup system with metadata * Batch processing capabilities * Enhanced error logging and recovery * Copy operations with URL fixing - Added Telegram contact creation API - Improved error logging across all modules - Enhanced callback system for AI responses - Extensive backup file storage with timestamps - Updated documentation and README files - File storage improvements: * Thousands of backup files with proper metadata * Fix operations for broken file references * Project-specific backup and recovery systems * Comprehensive file integrity checking Total: 26,461+ files added/modified including AWS SDK, vendor dependencies, and extensive backup system.
356 lines
13 KiB
Bash
356 lines
13 KiB
Bash
#!/bin/bash
|
||
|
||
# Скрипт настройки cron задач для проекта ERV
|
||
# Автор: Фёдор
|
||
# Дата: $(date +%Y-%m-%d)
|
||
|
||
# Цвета для вывода
|
||
RED='\033[0;31m'
|
||
GREEN='\033[0;32m'
|
||
YELLOW='\033[1;33m'
|
||
BLUE='\033[0;34m'
|
||
NC='\033[0m' # No Color
|
||
|
||
# Настройки
|
||
TOOLS_DIR="/var/www/fastuser/data/www/crm.clientright.ru/erv_project_tools"
|
||
PROJECT_PATH="/var/www/fastuser/data/www/erv.clientright.ru"
|
||
EMAIL="admin@clientright.ru"
|
||
|
||
# Функции для логирования
|
||
log() {
|
||
echo -e "${GREEN}[$(date '+%Y-%m-%d %H:%M:%S')]${NC} $1"
|
||
}
|
||
|
||
error() {
|
||
echo -e "${RED}[$(date '+%Y-%m-%d %H:%M:%S')] ОШИБКА:${NC} $1"
|
||
}
|
||
|
||
warning() {
|
||
echo -e "${YELLOW}[$(date '+%Y-%m-%d %H:%M:%S')] ПРЕДУПРЕЖДЕНИЕ:${NC} $1"
|
||
}
|
||
|
||
info() {
|
||
echo -e "${BLUE}[$(date '+%Y-%m-%d %H:%M:%S')] ИНФО:${NC} $1"
|
||
}
|
||
|
||
echo -e "${GREEN}=== НАСТРОЙКА CRON ЗАДАЧ ДЛЯ ПРОЕКТА ERV ===${NC}"
|
||
echo "Дата: $(date)"
|
||
echo ""
|
||
|
||
# Проверяем права доступа
|
||
if [ "$EUID" -ne 0 ]; then
|
||
error "Этот скрипт должен запускаться с правами root (sudo)"
|
||
exit 1
|
||
fi
|
||
|
||
# Проверяем существование директории с инструментами
|
||
if [ ! -d "$TOOLS_DIR" ]; then
|
||
error "Директория с инструментами не найдена: $TOOLS_DIR"
|
||
exit 1
|
||
fi
|
||
|
||
# Проверяем существование скриптов
|
||
SCRIPTS=(
|
||
"$TOOLS_DIR/backup_erv.sh"
|
||
"$TOOLS_DIR/monitor_erv.sh"
|
||
"$TOOLS_DIR/maintenance_erv.sh"
|
||
)
|
||
|
||
for script in "${SCRIPTS[@]}"; do
|
||
if [ ! -f "$script" ]; then
|
||
error "Скрипт не найден: $script"
|
||
exit 1
|
||
fi
|
||
|
||
# Делаем скрипты исполняемыми
|
||
chmod +x "$script"
|
||
log "Установлены права на выполнение для: $script"
|
||
done
|
||
|
||
# Создаем временный файл с cron задачами
|
||
CRON_FILE="/tmp/erv_crontab_$(date +%Y%m%d_%H%M%S)"
|
||
|
||
cat > "$CRON_FILE" << EOF
|
||
# Cron задачи для проекта ERV
|
||
# Настроено: $(date)
|
||
# Автор: Фёдор
|
||
|
||
# Резервное копирование каждый день в 2:00
|
||
0 2 * * * $TOOLS_DIR/backup_erv.sh >> $TOOLS_DIR/logs/backup.log 2>&1
|
||
|
||
# Мониторинг каждые 15 минут
|
||
*/15 * * * * $TOOLS_DIR/monitor_erv.sh >> $TOOLS_DIR/logs/monitor.log 2>&1
|
||
|
||
# Обслуживание каждую неделю в воскресенье в 3:00
|
||
0 3 * * 0 $TOOLS_DIR/maintenance_erv.sh >> $TOOLS_DIR/logs/maintenance.log 2>&1
|
||
|
||
# Очистка старых логов каждый месяц в первый день в 4:00
|
||
0 4 1 * * find $TOOLS_DIR/logs -name "*.log" -mtime +30 -delete
|
||
|
||
# Проверка SSL сертификата каждую неделю в понедельник в 5:00
|
||
0 5 * * 1 echo | openssl s_client -servername erv.clientright.ru -connect erv.clientright.ru:443 2>/dev/null | openssl x509 -noout -dates | grep notAfter | cut -d= -f2 | xargs -I {} date -d {} +%s | xargs -I {} expr {} - $(date +%s) | xargs -I {} expr {} / 86400 | xargs -I {} test {} -lt 30 && echo "SSL сертификат истекает через {} дней" | mail -s "SSL Certificate Alert" $EMAIL
|
||
|
||
# Проверка размера папки uploads каждый день в 6:00
|
||
0 6 * * * du -sm $PROJECT_PATH/uploads | awk '{if(\$1 > 1024) print "Папка uploads превышает 1GB: " \$1 "MB"}' | mail -s "ERV Uploads Size Alert" $EMAIL
|
||
|
||
# Проверка доступности сайта каждые 5 минут
|
||
*/5 * * * * curl -s --connect-timeout 10 https://erv.clientright.ru/ > /dev/null || echo "Сайт ERV недоступен!" | mail -s "ERV Site Down Alert" $EMAIL
|
||
|
||
# Проверка подключения к базе данных каждые 10 минут
|
||
*/10 * * * * mysql -uci20465_erv -pc7vOXbmG -e "SELECT 1;" ci20465_erv > /dev/null 2>&1 || echo "База данных ERV недоступна!" | mail -s "ERV Database Alert" $EMAIL
|
||
|
||
# Проверка внешних API каждый час
|
||
0 * * * * curl -s --connect-timeout 5 https://online.sigmasms.ru/api/ > /dev/null || echo "SMS API недоступен!" | mail -s "ERV SMS API Alert" $EMAIL
|
||
0 * * * * curl -s --connect-timeout 5 https://suggestions.dadata.ru/ > /dev/null || echo "DaData API недоступен!" | mail -s "ERV DaData API Alert" $EMAIL
|
||
0 * * * * curl -s --connect-timeout 5 https://form.clientright.ru/ > /dev/null || echo "CRM API недоступен!" | mail -s "ERV CRM API Alert" $EMAIL
|
||
|
||
# Еженедельный отчет о состоянии системы (каждый понедельник в 9:00)
|
||
0 9 * * 1 $TOOLS_DIR/generate_weekly_report.sh | mail -s "ERV Weekly Report" $EMAIL
|
||
|
||
EOF
|
||
|
||
log "Создан файл с cron задачами: $CRON_FILE"
|
||
|
||
# Создаем директорию для логов
|
||
mkdir -p "$TOOLS_DIR/logs"
|
||
log "Создана директория для логов: $TOOLS_DIR/logs"
|
||
|
||
# Создаем скрипт для генерации еженедельного отчета
|
||
WEEKLY_REPORT_SCRIPT="$TOOLS_DIR/generate_weekly_report.sh"
|
||
|
||
cat > "$WEEKLY_REPORT_SCRIPT" << 'EOF'
|
||
#!/bin/bash
|
||
|
||
# Генерация еженедельного отчета для проекта ERV
|
||
# Автор: Фёдор
|
||
|
||
TOOLS_DIR="/var/www/fastuser/data/www/crm.clientright.ru/erv_project_tools"
|
||
PROJECT_PATH="/var/www/fastuser/data/www/erv.clientright.ru"
|
||
|
||
echo "ЕЖЕНЕДЕЛЬНЫЙ ОТЧЕТ ПРОЕКТА ERV"
|
||
echo "=============================="
|
||
echo "Дата: $(date)"
|
||
echo "Период: $(date -d '7 days ago' '+%Y-%m-%d') - $(date '+%Y-%m-%d')"
|
||
echo ""
|
||
|
||
echo "СТАТУС СИСТЕМЫ:"
|
||
echo "- Сервер: $(hostname)"
|
||
echo "- ОС: $(lsb_release -d | cut -f2)"
|
||
echo "- Uptime: $(uptime -p)"
|
||
echo ""
|
||
|
||
echo "ИСПОЛЬЗОВАНИЕ РЕСУРСОВ:"
|
||
echo "- Диск: $(df -h $PROJECT_PATH | tail -1 | awk '{print $5}')"
|
||
echo "- Память: $(free -h | grep Mem | awk '{print $3 "/" $2}')"
|
||
echo "- CPU: $(uptime | awk -F'load average:' '{print $2}')"
|
||
echo ""
|
||
|
||
echo "РАЗМЕРЫ ПАПОК:"
|
||
echo "- uploads: $(du -sh $PROJECT_PATH/uploads 2>/dev/null | cut -f1 || echo 'Не найдена')"
|
||
echo "- cache: $(du -sh $PROJECT_PATH/cache 2>/dev/null | cut -f1 || echo 'Не найдена')"
|
||
echo ""
|
||
|
||
echo "СТАТИСТИКА ЛОГОВ:"
|
||
if [ -f "$TOOLS_DIR/logs/backup.log" ]; then
|
||
echo "- Резервных копий за неделю: $(grep -c "$(date -d '7 days ago' '+%Y-%m-%d')" $TOOLS_DIR/logs/backup.log 2>/dev/null || echo '0')"
|
||
fi
|
||
if [ -f "$TOOLS_DIR/logs/monitor.log" ]; then
|
||
echo "- Проверок мониторинга за неделю: $(grep -c "$(date -d '7 days ago' '+%Y-%m-%d')" $TOOLS_DIR/logs/monitor.log 2>/dev/null || echo '0')"
|
||
fi
|
||
if [ -f "$TOOLS_DIR/logs/maintenance.log" ]; then
|
||
echo "- Операций обслуживания за неделю: $(grep -c "$(date -d '7 days ago' '+%Y-%m-%d')" $TOOLS_DIR/logs/maintenance.log 2>/dev/null || echo '0')"
|
||
fi
|
||
echo ""
|
||
|
||
echo "ПРОБЛЕМЫ ЗА НЕДЕЛЮ:"
|
||
if [ -f "$TOOLS_DIR/logs/monitor.log" ]; then
|
||
ERROR_COUNT=$(grep -c "ОШИБКА" $TOOLS_DIR/logs/monitor.log 2>/dev/null || echo '0')
|
||
WARNING_COUNT=$(grep -c "ПРЕДУПРЕЖДЕНИЕ" $TOOLS_DIR/logs/monitor.log 2>/dev/null || echo '0')
|
||
echo "- Ошибок: $ERROR_COUNT"
|
||
echo "- Предупреждений: $WARNING_COUNT"
|
||
fi
|
||
echo ""
|
||
|
||
echo "РЕКОМЕНДАЦИИ:"
|
||
echo "- Проверьте логи на наличие ошибок"
|
||
echo "- Убедитесь в актуальности резервных копий"
|
||
echo "- Проверьте доступность внешних API"
|
||
echo "- Обновите систему при необходимости"
|
||
echo ""
|
||
|
||
echo "---"
|
||
echo "Отчет сгенерирован автоматически"
|
||
echo "Для получения подробной информации используйте скрипты мониторинга"
|
||
EOF
|
||
|
||
chmod +x "$WEEKLY_REPORT_SCRIPT"
|
||
log "Создан скрипт еженедельного отчета: $WEEKLY_REPORT_SCRIPT"
|
||
|
||
# Устанавливаем cron задачи
|
||
log "Устанавливаем cron задачи..."
|
||
|
||
# Сохраняем текущие cron задачи
|
||
crontab -l > /tmp/current_crontab 2>/dev/null || touch /tmp/current_crontab
|
||
|
||
# Объединяем с новыми задачами
|
||
cat /tmp/current_crontab "$CRON_FILE" | sort -u > /tmp/merged_crontab
|
||
|
||
# Устанавливаем объединенные задачи
|
||
crontab /tmp/merged_crontab
|
||
|
||
if [ $? -eq 0 ]; then
|
||
log "Cron задачи успешно установлены"
|
||
else
|
||
error "Не удалось установить cron задачи"
|
||
exit 1
|
||
fi
|
||
|
||
# Показываем установленные задачи
|
||
log "Установленные cron задачи:"
|
||
crontab -l | grep -E "(ERV|erv|backup|monitor|maintenance)"
|
||
|
||
# Создаем скрипт для управления cron задачами
|
||
MANAGE_SCRIPT="$TOOLS_DIR/manage_cron.sh"
|
||
|
||
cat > "$MANAGE_SCRIPT" << 'EOF'
|
||
#!/bin/bash
|
||
|
||
# Скрипт управления cron задачами для проекта ERV
|
||
# Автор: Фёдор
|
||
|
||
TOOLS_DIR="/var/www/fastuser/data/www/crm.clientright.ru/erv_project_tools"
|
||
|
||
show_menu() {
|
||
echo ""
|
||
echo "=== УПРАВЛЕНИЕ CRON ЗАДАЧАМИ ERV ==="
|
||
echo "1. Показать все cron задачи ERV"
|
||
echo "2. Показать логи резервного копирования"
|
||
echo "3. Показать логи мониторинга"
|
||
echo "4. Показать логи обслуживания"
|
||
echo "5. Очистить старые логи"
|
||
echo "6. Перезапустить cron службу"
|
||
echo "7. Проверить статус cron службы"
|
||
echo "0. Выход"
|
||
echo ""
|
||
}
|
||
|
||
show_erv_cron() {
|
||
echo "Cron задачи для проекта ERV:"
|
||
echo "============================"
|
||
crontab -l | grep -E "(ERV|erv|backup|monitor|maintenance)" || echo "Задачи не найдены"
|
||
echo ""
|
||
}
|
||
|
||
show_backup_logs() {
|
||
echo "Логи резервного копирования:"
|
||
echo "============================"
|
||
if [ -f "$TOOLS_DIR/logs/backup.log" ]; then
|
||
tail -20 "$TOOLS_DIR/logs/backup.log"
|
||
else
|
||
echo "Лог файл не найден"
|
||
fi
|
||
echo ""
|
||
}
|
||
|
||
show_monitor_logs() {
|
||
echo "Логи мониторинга:"
|
||
echo "=================="
|
||
if [ -f "$TOOLS_DIR/logs/monitor.log" ]; then
|
||
tail -20 "$TOOLS_DIR/logs/monitor.log"
|
||
else
|
||
echo "Лог файл не найден"
|
||
fi
|
||
echo ""
|
||
}
|
||
|
||
show_maintenance_logs() {
|
||
echo "Логи обслуживания:"
|
||
echo "=================="
|
||
if [ -f "$TOOLS_DIR/logs/maintenance.log" ]; then
|
||
tail -20 "$TOOLS_DIR/logs/maintenance.log"
|
||
else
|
||
echo "Лог файл не найден"
|
||
fi
|
||
echo ""
|
||
}
|
||
|
||
clean_old_logs() {
|
||
echo "Очищаем старые логи..."
|
||
find "$TOOLS_DIR/logs" -name "*.log" -mtime +30 -delete 2>/dev/null
|
||
echo "Старые логи удалены"
|
||
echo ""
|
||
}
|
||
|
||
restart_cron() {
|
||
echo "Перезапускаем cron службу..."
|
||
sudo systemctl restart cron
|
||
echo "Cron служба перезапущена"
|
||
echo ""
|
||
}
|
||
|
||
check_cron_status() {
|
||
echo "Статус cron службы:"
|
||
echo "==================="
|
||
sudo systemctl status cron --no-pager
|
||
echo ""
|
||
}
|
||
|
||
# Главный цикл
|
||
while true; do
|
||
show_menu
|
||
read -p "Выберите опцию (0-7): " choice
|
||
|
||
case $choice in
|
||
1) show_erv_cron ;;
|
||
2) show_backup_logs ;;
|
||
3) show_monitor_logs ;;
|
||
4) show_maintenance_logs ;;
|
||
5) clean_old_logs ;;
|
||
6) restart_cron ;;
|
||
7) check_cron_status ;;
|
||
0) echo "Выход"; break ;;
|
||
*) echo "Неверный выбор. Попробуйте снова." ;;
|
||
esac
|
||
|
||
echo ""
|
||
read -p "Нажмите Enter для продолжения..."
|
||
done
|
||
EOF
|
||
|
||
chmod +x "$MANAGE_SCRIPT"
|
||
log "Создан скрипт управления cron: $MANAGE_SCRIPT"
|
||
|
||
# Проверяем статус cron службы
|
||
log "Проверяем статус cron службы..."
|
||
if systemctl is-active --quiet cron; then
|
||
log "Cron служба активна"
|
||
else
|
||
warning "Cron служба неактивна, запускаем..."
|
||
systemctl start cron
|
||
systemctl enable cron
|
||
fi
|
||
|
||
# Очищаем временные файлы
|
||
rm -f /tmp/current_crontab /tmp/merged_crontab "$CRON_FILE"
|
||
|
||
echo ""
|
||
log "=== НАСТРОЙКА CRON ЗАДАЧ ЗАВЕРШЕНА ==="
|
||
echo ""
|
||
info "Установленные задачи:"
|
||
echo "- Резервное копирование: ежедневно в 2:00"
|
||
echo "- Мониторинг: каждые 15 минут"
|
||
echo "- Обслуживание: еженедельно в воскресенье в 3:00"
|
||
echo "- Очистка логов: ежемесячно"
|
||
echo "- Проверка SSL: еженедельно"
|
||
echo "- Проверка размера uploads: ежедневно"
|
||
echo "- Проверка доступности сайта: каждые 5 минут"
|
||
echo "- Проверка БД: каждые 10 минут"
|
||
echo "- Проверка API: ежечасно"
|
||
echo "- Еженедельный отчет: по понедельникам в 9:00"
|
||
echo ""
|
||
info "Для управления cron задачами используйте: $MANAGE_SCRIPT"
|
||
info "Логи сохраняются в: $TOOLS_DIR/logs/"
|
||
echo ""
|
||
|
||
exit 0
|