diff --git a/full_diagnosis.sh b/full_diagnosis.sh new file mode 100644 index 0000000..2575a2c --- /dev/null +++ b/full_diagnosis.sh @@ -0,0 +1,150 @@ +#!/bin/bash + +# MY Network Server Full Diagnosis Script +# Собирает всю информацию о состоянии сервера для удаленной диагностики + +echo "==============================================" +echo "MY NETWORK SERVER DIAGNOSIS REPORT" +echo "Время: $(date)" +echo "Сервер: $(hostname)" +echo "==============================================" + +echo "" +echo "=== 1. СИСТЕМНАЯ ИНФОРМАЦИЯ ===" +echo "OS: $(lsb_release -d 2>/dev/null | cut -f2 || cat /etc/os-release | grep PRETTY_NAME | cut -d'"' -f2)" +echo "Kernel: $(uname -r)" +echo "Uptime: $(uptime)" +echo "Disk space:" +df -h | grep -E "(/$|/home)" +echo "Memory:" +free -h +echo "Load average: $(cat /proc/loadavg)" + +echo "" +echo "=== 2. СЕТЕВЫЕ ПОРТЫ И СОЕДИНЕНИЯ ===" +echo "Активные порты (LISTEN):" +sudo netstat -tulpn | grep LISTEN | sort -k4 +echo "" +echo "Проверка ключевых портов:" +for port in 22 80 443 3000 5000 8080; do + if sudo netstat -tulpn | grep -q ":${port} "; then + echo "✅ Порт $port: АКТИВЕН" + else + echo "❌ Порт $port: НЕ АКТИВЕН" + fi +done + +echo "" +echo "=== 3. СТАТУС СИСТЕМНЫХ СЛУЖБ ===" +echo "Docker service:" +sudo systemctl status docker --no-pager -l +echo "" +echo "SSH service:" +sudo systemctl status ssh --no-pager -l +echo "" +echo "Nginx service:" +sudo systemctl status nginx --no-pager -l +echo "" +echo "MyUploader service:" +sudo systemctl status myuploader --no-pager -l 2>/dev/null || echo "MyUploader service не найден" + +echo "" +echo "=== 4. DOCKER ИНФОРМАЦИЯ ===" +echo "Docker version:" +docker --version 2>/dev/null || echo "Docker не установлен" +echo "" +echo "Docker-compose version:" +docker-compose --version 2>/dev/null || echo "Docker-compose не установлен" +echo "" +echo "Запущенные контейнеры:" +sudo docker ps -a --format "table {{.Names}}\t{{.Image}}\t{{.Status}}\t{{.Ports}}" 2>/dev/null || echo "Контейнеры не найдены" +echo "" +echo "Docker networks:" +sudo docker network ls 2>/dev/null || echo "Docker networks недоступны" + +echo "" +echo "=== 5. MY-UPLOADER-BOT ПРОЕКТ ===" +PROJECT_DIR="/home/myuploader/my-uploader-bot" +if [ -d "$PROJECT_DIR" ]; then + echo "✅ Директория проекта найдена: $PROJECT_DIR" + echo "Содержимое директории:" + ls -la "$PROJECT_DIR" + echo "" + + if [ -f "$PROJECT_DIR/docker-compose.production.yml" ]; then + echo "✅ Docker-compose файл найден" + echo "Статус compose проекта:" + cd "$PROJECT_DIR" + sudo docker-compose -f docker-compose.production.yml ps 2>/dev/null || echo "Ошибка получения статуса compose" + else + echo "❌ Docker-compose.production.yml не найден" + fi +else + echo "❌ Директория проекта не найдена: $PROJECT_DIR" +fi + +echo "" +echo "=== 6. ЛОГИ КОНТЕЙНЕРОВ (последние 10 строк) ===" +for container in uploader-bot-app-1 uploader-bot-postgres-1 uploader-bot-nginx-1; do + echo "--- Логи $container ---" + sudo docker logs --tail=10 "$container" 2>/dev/null || echo "Контейнер $container не найден или не запущен" + echo "" +done + +echo "" +echo "=== 7. NGINX КОНФИГУРАЦИЯ ===" +echo "Nginx конфигурация:" +sudo nginx -t 2>&1 +echo "" +echo "Default site config:" +if [ -f "/etc/nginx/sites-enabled/default" ]; then + sudo cat /etc/nginx/sites-enabled/default +else + echo "❌ /etc/nginx/sites-enabled/default не найден" +fi + +echo "" +echo "=== 8. SSH КОНФИГУРАЦИЯ ===" +echo "SSH config (основные параметры):" +sudo cat /etc/ssh/sshd_config | grep -E "^(Port|PasswordAuthentication|PubkeyAuthentication|PermitRootLogin)" || echo "SSH config недоступен" + +echo "" +echo "=== 9. ФАЙРВОЛ (UFW) ===" +echo "UFW статус:" +sudo ufw status verbose 2>/dev/null || echo "UFW не установлен или недоступен" + +echo "" +echo "=== 10. ЛОКАЛЬНЫЕ ТЕСТЫ СОЕДИНЕНИЙ ===" +echo "Тест локальных соединений:" +for port in 3000 5000 8080; do + if curl -s --max-time 3 http://localhost:$port/api/health > /dev/null 2>&1; then + echo "✅ localhost:$port/api/health - ДОСТУПЕН" + else + echo "❌ localhost:$port/api/health - НЕ ДОСТУПЕН" + fi +done + +echo "" +echo "Тест nginx:" +curl -I http://localhost/ 2>/dev/null | head -5 || echo "❌ Nginx недоступен на localhost" + +echo "" +echo "=== 11. ПРОЦЕССЫ ===" +echo "Процессы Python/Docker:" +ps aux | grep -E "(python|docker|nginx)" | grep -v grep + +echo "" +echo "=== 12. RECENT SYSTEM LOGS ===" +echo "Последние системные ошибки:" +sudo journalctl --since "1 hour ago" --priority=err --no-pager -n 10 2>/dev/null || echo "Системные логи недоступны" + +echo "" +echo "==============================================" +echo "ДИАГНОСТИКА ЗАВЕРШЕНА" +echo "Время завершения: $(date)" +echo "==============================================" + +echo "" +echo "📋 КРАТКАЯ СВОДКА:" +echo "Скопируйте весь вывод этого скрипта и отправьте для анализа" +echo "" \ No newline at end of file