#!/bin/bash # Скрипт для проверки статуса РКН проверки echo "═══════════════════════════════════════════════════════════════" echo "🔍 СТАТУС ПРОВЕРКИ РКН (РОСКОМНАДЗОР)" echo "═══════════════════════════════════════════════════════════════" # Проверка процесса if ps aux | grep -v grep | grep "check_rkn_registry.py" > /dev/null; then PID=$(ps aux | grep -v grep | grep "check_rkn_registry.py" | awk '{print $2}') CPU=$(ps aux | grep -v grep | grep "check_rkn_registry.py" | awk '{print $3}') MEM=$(ps aux | grep -v grep | grep "check_rkn_registry.py" | awk '{print $4}') echo "✅ РКН проверка РАБОТАЕТ" echo " PID: $PID" echo " CPU: ${CPU}%" echo " MEM: ${MEM}%" else echo "❌ РКН проверка НЕ РАБОТАЕТ" fi echo "" echo "───────────────────────────────────────────────────────────────" echo "📊 ПРОГРЕСС ИЗ БАЗЫ ДАННЫХ:" echo "───────────────────────────────────────────────────────────────" python3 << 'EOF' import psycopg2 from urllib.parse import unquote from datetime import datetime, timedelta conn = psycopg2.connect( host='147.45.189.234', port=5432, database='default_db', user='gen_user', password=unquote('2~~9_%5EkVsU%3F2%5CS') ) cur = conn.cursor() # Общая статистика cur.execute(""" SELECT COUNT(*) as total_with_inn, COUNT(CASE WHEN rkn_checked_at IS NOT NULL THEN 1 END) as checked FROM hotel_main WHERE owner_inn IS NOT NULL AND owner_inn != '' AND owner_inn != '-' """) row = cur.fetchone() total = row[0] checked = row[1] remaining = total - checked progress = checked * 100 / total if total > 0 else 0 print(f"Отелей с ИНН: {total}") print(f"Проверено: {checked} ({progress:.1f}%)") print(f"Осталось: {remaining}") # Проверено за последние 10 минут cur.execute(""" SELECT COUNT(*) FROM hotel_main WHERE rkn_checked_at > NOW() - INTERVAL '10 minutes' """) last_10min = cur.fetchone()[0] if last_10min > 0: speed = last_10min / 10 # отелей в минуту eta_min = remaining / speed if speed > 0 else 0 print(f"\n⚡ СКОРОСТЬ (за последние 10 мин):") print(f" {last_10min} отелей проверено") print(f" Скорость: {speed:.1f} отелей/мин") if eta_min > 0: print(f" Примерное время до завершения: {eta_min/60:.1f} часов") # Результаты cur.execute(""" SELECT rkn_registry_status, COUNT(*) as count FROM hotel_main WHERE rkn_checked_at IS NOT NULL GROUP BY rkn_registry_status """) print(f"\n📋 РЕЗУЛЬТАТЫ:") for row in cur.fetchall(): status = row[0] if row[0] else 'NULL' count = row[1] percent = count * 100 / checked if checked > 0 else 0 icon = '✅' if status == 'found' else '❓' if status == 'unclear' else '❌' print(f" {icon} {status:15} | {count:5} ({percent:5.1f}%)") conn.close() EOF echo "" echo "───────────────────────────────────────────────────────────────" echo "📋 ПОСЛЕДНИЕ 15 СТРОК ЛОГА:" echo "───────────────────────────────────────────────────────────────" if [ -f "rkn_check_all.log" ]; then tail -15 rkn_check_all.log else echo "❌ Лог файл не найден" fi echo "" echo "═══════════════════════════════════════════════════════════════"