Files
crm.clientright.ru/erv_project_tools/crontab_setup.sh
Fedor ac7467f0b4 Major CRM updates: AI Assistant, Court Status API, S3 integration improvements, and extensive file storage system
- 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.
2025-10-16 11:17:21 +03:00

356 lines
13 KiB
Bash
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/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