chore: Änderungen commited
This commit is contained in:
182
backend/setup/vm-internet-check.sh
Normal file
182
backend/setup/vm-internet-check.sh
Normal file
@@ -0,0 +1,182 @@
|
||||
#!/bin/bash
|
||||
|
||||
#######################################################################
|
||||
# VM Internet-Verbindung Diagnose und Reparatur
|
||||
#
|
||||
# Speziell für virtuelle Maschinen mit Internet-Verbindungsproblemen
|
||||
# im MYP AIO-Installer
|
||||
#######################################################################
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
# Farben für Ausgabe
|
||||
readonly RED='\033[0;31m'
|
||||
readonly GREEN='\033[0;32m'
|
||||
readonly YELLOW='\033[1;33m'
|
||||
readonly BLUE='\033[0;34m'
|
||||
readonly NC='\033[0m' # No Color
|
||||
|
||||
log() {
|
||||
local level="$1"
|
||||
shift
|
||||
local message="$*"
|
||||
|
||||
case "$level" in
|
||||
"INFO") echo -e "${GREEN}[INFO]${NC} $message" ;;
|
||||
"WARN") echo -e "${YELLOW}[WARN]${NC} $message" ;;
|
||||
"ERROR") echo -e "${RED}[ERROR]${NC} $message" ;;
|
||||
"DEBUG") echo -e "${BLUE}[DEBUG]${NC} $message" ;;
|
||||
esac
|
||||
}
|
||||
|
||||
echo "🔍 MYP VM Internet-Verbindung Diagnose"
|
||||
echo "======================================"
|
||||
echo
|
||||
|
||||
# 1. VM-Umgebung prüfen
|
||||
log "INFO" "Prüfe VM-Umgebung..."
|
||||
if command -v systemd-detect-virt &>/dev/null; then
|
||||
virt_type=$(systemd-detect-virt)
|
||||
if [[ "$virt_type" != "none" ]]; then
|
||||
log "INFO" "✓ VM-Umgebung erkannt: $virt_type"
|
||||
else
|
||||
log "WARN" "Keine VM-Umgebung erkannt (aber Script wurde manuell gestartet)"
|
||||
fi
|
||||
else
|
||||
log "WARN" "systemd-detect-virt nicht verfügbar"
|
||||
fi
|
||||
|
||||
# 2. Netzwerk-Interface prüfen
|
||||
log "INFO" "Prüfe Netzwerk-Interfaces..."
|
||||
active_interfaces=$(ip link show | grep "state UP" | wc -l)
|
||||
if [[ $active_interfaces -gt 0 ]]; then
|
||||
log "INFO" "✓ $active_interfaces aktive Netzwerk-Interface(s)"
|
||||
ip link show | grep "state UP" | while read line; do
|
||||
interface=$(echo "$line" | awk -F: '{print $2}' | tr -d ' ')
|
||||
log "DEBUG" " - Interface: $interface"
|
||||
done
|
||||
else
|
||||
log "ERROR" "✗ Keine aktiven Netzwerk-Interfaces"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 3. IP-Adressen prüfen
|
||||
log "INFO" "Prüfe IP-Adressen..."
|
||||
ip_addresses=$(hostname -I 2>/dev/null | tr ' ' '\n' | grep -v '^$' || echo "")
|
||||
if [[ -n "$ip_addresses" ]]; then
|
||||
log "INFO" "✓ IP-Adressen gefunden:"
|
||||
echo "$ip_addresses" | while read ip; do
|
||||
[[ -n "$ip" ]] && log "DEBUG" " - $ip"
|
||||
done
|
||||
else
|
||||
log "ERROR" "✗ Keine IP-Adressen gefunden"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 4. DNS-Konfiguration prüfen
|
||||
log "INFO" "Prüfe DNS-Konfiguration..."
|
||||
if [[ -f "/etc/resolv.conf" ]]; then
|
||||
dns_servers=$(grep "^nameserver" /etc/resolv.conf | awk '{print $2}' | head -3)
|
||||
if [[ -n "$dns_servers" ]]; then
|
||||
log "INFO" "✓ DNS-Server konfiguriert:"
|
||||
echo "$dns_servers" | while read dns; do
|
||||
log "DEBUG" " - $dns"
|
||||
done
|
||||
else
|
||||
log "WARN" "Keine DNS-Server in /etc/resolv.conf gefunden"
|
||||
fi
|
||||
else
|
||||
log "WARN" "/etc/resolv.conf nicht gefunden"
|
||||
fi
|
||||
|
||||
# 5. Gateway prüfen
|
||||
log "INFO" "Prüfe Standard-Gateway..."
|
||||
default_gateway=$(ip route | grep "^default" | awk '{print $3}' | head -1)
|
||||
if [[ -n "$default_gateway" ]]; then
|
||||
log "INFO" "✓ Standard-Gateway: $default_gateway"
|
||||
|
||||
# Gateway-Ping testen
|
||||
if ping -c 2 -W 10 "$default_gateway" &>/dev/null; then
|
||||
log "INFO" "✓ Gateway erreichbar"
|
||||
else
|
||||
log "ERROR" "✗ Gateway nicht erreichbar"
|
||||
fi
|
||||
else
|
||||
log "ERROR" "✗ Kein Standard-Gateway gefunden"
|
||||
fi
|
||||
|
||||
# 6. Internet-Konnektivität testen (erweitert)
|
||||
log "INFO" "Teste Internet-Konnektivität (VM-optimiert)..."
|
||||
|
||||
test_hosts=(
|
||||
"8.8.8.8:Google DNS"
|
||||
"1.1.1.1:Cloudflare DNS"
|
||||
"9.9.9.9:Quad9 DNS"
|
||||
"208.67.222.222:OpenDNS"
|
||||
)
|
||||
|
||||
internet_working=false
|
||||
for host_info in "${test_hosts[@]}"; do
|
||||
host=$(echo "$host_info" | cut -d: -f1)
|
||||
name=$(echo "$host_info" | cut -d: -f2)
|
||||
|
||||
log "DEBUG" "Teste $name ($host)..."
|
||||
|
||||
if timeout 20 ping -c 3 -W 10 "$host" &>/dev/null; then
|
||||
log "INFO" "✓ Internet-Verbindung über $name erfolgreich"
|
||||
internet_working=true
|
||||
break
|
||||
else
|
||||
log "WARN" "✗ $name nicht erreichbar"
|
||||
fi
|
||||
done
|
||||
|
||||
# 7. HTTP-Konnektivität testen
|
||||
if [[ "$internet_working" == "true" ]]; then
|
||||
log "INFO" "Teste HTTP-Konnektivität..."
|
||||
|
||||
test_urls=(
|
||||
"http://connectivitycheck.gstatic.com/generate_204"
|
||||
"http://www.gstatic.com/generate_204"
|
||||
"http://clients3.google.com/generate_204"
|
||||
)
|
||||
|
||||
for url in "${test_urls[@]}"; do
|
||||
if timeout 30 curl -sf --connect-timeout 20 --max-time 25 "$url" &>/dev/null; then
|
||||
log "INFO" "✓ HTTP-Verbindung erfolgreich zu $url"
|
||||
break
|
||||
else
|
||||
log "WARN" "✗ HTTP-Verbindung fehlgeschlagen zu $url"
|
||||
fi
|
||||
done
|
||||
fi
|
||||
|
||||
# 8. Fazit und Empfehlungen
|
||||
echo
|
||||
echo "🎯 DIAGNOSE-ERGEBNIS:"
|
||||
echo "===================="
|
||||
|
||||
if [[ "$internet_working" == "true" ]]; then
|
||||
log "INFO" "✅ Internet-Verbindung funktioniert!"
|
||||
echo
|
||||
echo "🚀 EMPFOHLENE BEFEHLE FÜR MYP-INSTALLATION:"
|
||||
echo "sudo ./setup/aio_installer.sh --vm-mode --full"
|
||||
echo "oder"
|
||||
echo "sudo ./setup/aio_installer.sh --skip-internet-check --full"
|
||||
echo
|
||||
else
|
||||
log "ERROR" "❌ Internet-Verbindung problematisch"
|
||||
echo
|
||||
echo "🔧 LÖSUNGSVORSCHLÄGE:"
|
||||
echo "1. VM-Netzwerk-Einstellungen prüfen (NAT vs. Bridge)"
|
||||
echo "2. VM neu starten und 2 Minuten warten"
|
||||
echo "3. Host-Internet-Verbindung prüfen"
|
||||
echo "4. Firewall/Proxy-Einstellungen prüfen"
|
||||
echo
|
||||
echo "🚀 TROTZDEM VERSUCHEN:"
|
||||
echo "sudo ./setup/aio_installer.sh --force-offline --full"
|
||||
echo
|
||||
fi
|
||||
|
||||
echo "📋 WEITERE OPTIONEN:"
|
||||
echo "sudo ./setup/aio_installer.sh --help"
|
Reference in New Issue
Block a user