150 lines
5.4 KiB
Bash
150 lines
5.4 KiB
Bash
#!/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 "" |