📚 Improved database logs and setup files 🎉
This commit is contained in:
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -146,3 +146,4 @@ FROM jobs LEFT OUTER JOIN users AS users_1 ON users_1.id = jobs.user_id LEFT OUT
|
||||
2025-06-02 15:19:34 - [jobs] jobs - [INFO] INFO - Jobs abgerufen: 16 von 16 (Seite 1)
|
||||
2025-06-02 15:19:34 - [jobs] jobs - [INFO] INFO - Jobs abgerufen: 16 von 16 (Seite 1)
|
||||
2025-06-02 15:20:02 - [jobs] jobs - [INFO] INFO - Jobs abgerufen: 16 von 16 (Seite 1)
|
||||
2025-06-03 13:31:45 - [jobs] jobs - [INFO] INFO - Jobs abgerufen: 16 von 16 (Seite 1)
|
||||
|
@ -1,4 +1,32 @@
|
||||
=================================================================
|
||||
MYP Installation DEBUG Log - 2025-06-03 13:34:06
|
||||
MYP Installation DEBUG Log - 2025-06-03 13:38:42
|
||||
=================================================================
|
||||
|
||||
[2025-06-03 13:38:42] DEBUG von setup.sh:449
|
||||
Debian erkannt über /etc/debian_version: 12.11
|
||||
---
|
||||
|
||||
[2025-06-03 13:38:42] DEBUG von setup.sh:517
|
||||
Kein Raspberry Pi erkannt. Hardware-Info:
|
||||
---
|
||||
|
||||
[2025-06-03 13:38:42] DEBUG von setup.sh:518
|
||||
- Device Tree: nicht verfügbar
|
||||
---
|
||||
|
||||
[2025-06-03 13:38:42] DEBUG von setup.sh:519
|
||||
- CPU Hardware: nicht verfügbar
|
||||
---
|
||||
|
||||
[2025-06-03 13:38:42] DEBUG von setup.sh:559
|
||||
Vollständige Kernel-Info: Linux raspberrypi 6.1.0-37-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.140-1 (2025-05-22) x86_64 GNU/Linux
|
||||
---
|
||||
|
||||
[2025-06-03 13:38:43] DEBUG von setup.sh:615
|
||||
DNS-Test Details: Teste DNS für 8.8.8.8: Erfolg mit nslookup.
|
||||
---
|
||||
|
||||
[2025-06-03 13:38:43] DEBUG von setup.sh:716
|
||||
Externe IP ermittelt über ifconfig.me: 163.116.178.31
|
||||
---
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
=================================================================
|
||||
MYP Installation FEHLER Log - 2025-06-03 13:34:06
|
||||
MYP Installation FEHLER Log - 2025-06-03 13:38:42
|
||||
=================================================================
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
=================================================================
|
||||
MYP Installation WARNUNGEN Log - 2025-06-03 13:34:06
|
||||
MYP Installation WARNUNGEN Log - 2025-06-03 13:38:42
|
||||
=================================================================
|
||||
|
||||
|
@ -1,10 +1,73 @@
|
||||
=================================================================
|
||||
MYP Installation Log - 2025-06-03 13:34:06
|
||||
MYP Installation Log - 2025-06-03 13:38:42
|
||||
Script Version: 4.1.0
|
||||
System: Linux raspberrypi 6.1.0-37-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.140-1 (2025-05-22) x86_64 GNU/Linux
|
||||
=================================================================
|
||||
|
||||
[0;32m[2025-06-03 13:34:06] === MODUS: ROBUSTE ABHÄNGIGKEITEN-INSTALLATION FÜR MANUELLES TESTEN ===[0m
|
||||
[0;32m[2025-06-03 13:34:06] ✅ Root-Berechtigung bestätigt[0m
|
||||
[0;32m[2025-06-03 13:34:06] === SYSTEM-RESSOURCEN PRÜFUNG ===[0m
|
||||
[0;35m[FORTSCHRITT] Verfügbarer RAM: MB[0m
|
||||
[0;32m[2025-06-03 13:38:42] === MODUS: ROBUSTE ABHÄNGIGKEITEN-INSTALLATION FÜR MANUELLES TESTEN ===[0m
|
||||
[0;32m[2025-06-03 13:38:42] ✅ Root-Berechtigung bestätigt[0m
|
||||
[0;32m[2025-06-03 13:38:42] === SYSTEM-RESSOURCEN PRÜFUNG ===[0m
|
||||
[0;35m[FORTSCHRITT] Prüfe RAM...[0m
|
||||
[0;35m[FORTSCHRITT] Verfügbarer RAM: 24031MB[0m
|
||||
[0;36m[ERFOLG] ✅ Ausreichend RAM verfügbar (24031MB)[0m
|
||||
[0;35m[FORTSCHRITT] Prüfe Festplattenplatz...[0m
|
||||
[0;35m[FORTSCHRITT] Verfügbarer Festplattenplatz: 12,5GB (12825MB)[0m
|
||||
[0;36m[ERFOLG] ✅ Ausreichend Festplattenplatz verfügbar (12,5GB)[0m
|
||||
[0;35m[FORTSCHRITT] Prüfe CPU...[0m
|
||||
[0;35m[FORTSCHRITT] CPU: 8 Kern(e) - 11th Gen Intel(R) Core(TM) i7-11850H @ 2.50GHz[0m
|
||||
[0;36m[ERFOLG] ✅ CPU-Information erfolgreich ermittelt[0m
|
||||
[0;32m[2025-06-03 13:38:42] ✅ System-Ressourcen-Prüfung abgeschlossen[0m
|
||||
[0;35m[FORTSCHRITT] Prüfe Debian/Raspbian-System...[0m
|
||||
[0;34m[DEBUG] Debian erkannt über /etc/debian_version: 12.11[0m
|
||||
[0;32m[2025-06-03 13:38:42] ✅ Debian/Raspbian-basiertes System erkannt (Version: 12.11)[0m
|
||||
[0;35m[FORTSCHRITT] Prüfe Raspberry Pi Hardware...[0m
|
||||
[0;34m[INFO] 💻 Standard-PC/Server System (kein Raspberry Pi)[0m
|
||||
[0;34m[DEBUG] Kein Raspberry Pi erkannt. Hardware-Info:[0m
|
||||
[0;34m[DEBUG] - Device Tree: nicht verfügbar[0m
|
||||
[0;34m[DEBUG] - CPU Hardware: nicht verfügbar[0m
|
||||
[0;35m[FORTSCHRITT] Prüfe System-Architektur...[0m
|
||||
[0;34m[INFO] 📐 System-Architektur: x86_64[0m
|
||||
[0;34m[INFO] → 64-Bit x86 Architektur erkannt[0m
|
||||
[0;35m[FORTSCHRITT] Prüfe Kernel-Version...[0m
|
||||
[0;34m[INFO] 🐧 Kernel-Version: 6.1.0-37-amd64[0m
|
||||
[0;34m[DEBUG] Vollständige Kernel-Info: Linux raspberrypi 6.1.0-37-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.140-1 (2025-05-22) x86_64 GNU/Linux[0m
|
||||
[0;32m[2025-06-03 13:38:42] ✅ System-Analyse abgeschlossen[0m
|
||||
[0;35m[FORTSCHRITT] Prüfe Internetverbindung (erweiterte Methoden)...[0m
|
||||
[0;35m[FORTSCHRITT] Teste DNS-Auflösung...[0m
|
||||
[0;34m[DEBUG] DNS-Test Details: Teste DNS für 8.8.8.8: Erfolg mit nslookup. [0m
|
||||
[0;36m[ERFOLG] ✅ Internetverbindung verfügbar[0m
|
||||
[0;34m[INFO] 🔍 Erkannt via: DNS-Auflösung (nslookup: 8.8.8.8)[0m
|
||||
[0;35m[FORTSCHRITT] Ermittle externe IP-Adresse...[0m
|
||||
[0;34m[INFO] 🌐 Externe IP: 163.116.178.31[0m
|
||||
[0;34m[DEBUG] Externe IP ermittelt über ifconfig.me: 163.116.178.31[0m
|
||||
[0;32m[2025-06-03 13:38:43] === KONFIGURIERE HOSTNAME ===[0m
|
||||
[0;32m[2025-06-03 13:38:43] ✅ Hostname bereits korrekt: 'raspberrypi'[0m
|
||||
[0;32m[2025-06-03 13:38:43] ✅ Hostname-Auflösung funktioniert: raspberrypi -> 127.0.1.1[0m
|
||||
[0;32m[2025-06-03 13:38:43] === ROBUSTE SYSTEM-UPDATE ===[0m
|
||||
[0;35m[FORTSCHRITT] Konfiguriere APT für bessere Zuverlässigkeit...[0m
|
||||
[0;35m[FORTSCHRITT] Validiere APT-Repositories...[0m
|
||||
[0;32m[2025-06-03 13:38:43] ✅ Source-Repositories deaktiviert (nicht benötigt)[0m
|
||||
[0;35m[FORTSCHRITT] Aktualisiere Paketlisten mit Retry...[0m
|
||||
[0;35m[FORTSCHRITT] Führe System-Upgrade durch...[0m
|
||||
[0;35m[FORTSCHRITT] Installiere essenzielle System-Tools...[0m
|
||||
[0;35m[FORTSCHRITT] Installiere Pakete: ca-certificates[0m
|
||||
[0;35m[FORTSCHRITT] Installiere Pakete: gnupg[0m
|
||||
[0;35m[FORTSCHRITT] Installiere Pakete: curl[0m
|
||||
[0;35m[FORTSCHRITT] Installiere Pakete: wget[0m
|
||||
[0;35m[FORTSCHRITT] Installiere Pakete: git[0m
|
||||
[0;35m[FORTSCHRITT] Installiere Pakete: nano[0m
|
||||
[0;35m[FORTSCHRITT] Installiere Pakete: htop[0m
|
||||
[0;35m[FORTSCHRITT] Installiere Pakete: rsync[0m
|
||||
[0;35m[FORTSCHRITT] Installiere Pakete: unzip[0m
|
||||
[0;35m[FORTSCHRITT] Installiere Pakete: sudo[0m
|
||||
[0;35m[FORTSCHRITT] Installiere Pakete: systemd[0m
|
||||
[0;35m[FORTSCHRITT] Installiere Pakete: lsb-release[0m
|
||||
[0;35m[FORTSCHRITT] Installiere Pakete: apt-transport-https[0m
|
||||
[0;35m[FORTSCHRITT] Installiere Pakete: software-properties-common[0m
|
||||
[0;35m[FORTSCHRITT] Installiere Pakete: bc[0m
|
||||
[0;35m[FORTSCHRITT] Installiere Pakete: dbus[0m
|
||||
[0;35m[FORTSCHRITT] Installiere Pakete: systemd-timesyncd[0m
|
||||
[0;35m[FORTSCHRITT] Synchronisiere Systemzeit...[0m
|
||||
[0;32m[2025-06-03 13:38:53] ✅ Robustes System-Update abgeschlossen[0m
|
||||
[0;32m[2025-06-03 13:38:53] === KONFIGURIERE ERWEITERTE NETZWERK-SICHERHEIT ===[0m
|
||||
[0;35m[FORTSCHRITT] Deaktiviere IPv6...[0m
|
||||
|
@ -6711,3 +6711,4 @@
|
||||
2025-06-02 15:31:02 - [printers] printers - [INFO] INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1)
|
||||
2025-06-02 15:31:02 - [printers] printers - [INFO] INFO - ✅ Live-Status-Abfrage erfolgreich: 2 Drucker
|
||||
2025-06-02 15:31:02 - [printers] printers - [INFO] INFO - ✅ API-Live-Drucker-Status-Abfrage 'get_live_printer_status' erfolgreich in 1.42ms
|
||||
2025-06-03 13:31:45 - [printers] printers - [INFO] INFO - Schnelles Laden abgeschlossen: 6 Drucker geladen (ohne Status-Check)
|
||||
|
@ -29766,3 +29766,207 @@
|
||||
2025-06-03 13:34:46 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x000002446CDC58C0>, 'Connection to 192.168.0.103 timed out. (connect timeout=2)'))
|
||||
2025-06-03 13:34:46 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 8 nicht einschalten
|
||||
2025-06-03 13:34:46 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 1: test
|
||||
2025-06-03 13:34:48 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x000002446CDC4D10>, 'Connection to 192.168.0.103 timed out. (connect timeout=2)'))
|
||||
2025-06-03 13:34:48 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 1 nicht einschalten
|
||||
2025-06-03 13:34:48 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 2: test
|
||||
2025-06-03 13:34:50 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x000002446CDC4F30>, 'Connection to 192.168.0.103 timed out. (connect timeout=2)'))
|
||||
2025-06-03 13:34:50 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 2 nicht einschalten
|
||||
2025-06-03 13:34:50 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 3: test
|
||||
2025-06-03 13:34:52 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x000002446CDC5AE0>, 'Connection to 192.168.0.103 timed out. (connect timeout=2)'))
|
||||
2025-06-03 13:34:52 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 3 nicht einschalten
|
||||
2025-06-03 13:34:52 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 4: test
|
||||
2025-06-03 13:34:54 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x000002446CD56E00>, 'Connection to 192.168.0.103 timed out. (connect timeout=2)'))
|
||||
2025-06-03 13:34:54 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 4 nicht einschalten
|
||||
2025-06-03 13:34:54 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 5: test
|
||||
2025-06-03 13:34:56 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x000002446CD56F10>, 'Connection to 192.168.0.103 timed out. (connect timeout=2)'))
|
||||
2025-06-03 13:34:56 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 5 nicht einschalten
|
||||
2025-06-03 13:34:56 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 6: test
|
||||
2025-06-03 13:34:58 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x000002446CD567A0>, 'Connection to 192.168.0.103 timed out. (connect timeout=2)'))
|
||||
2025-06-03 13:34:58 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 6 nicht einschalten
|
||||
2025-06-03 13:34:58 - [scheduler] scheduler - [INFO] INFO - ⚡ Starte Sofort-Job 9: zi
|
||||
2025-06-03 13:35:01 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.104: HTTPConnectionPool(host='192.168.0.104', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x000002446CDC4C00>, 'Connection to 192.168.0.104 timed out. (connect timeout=2)'))
|
||||
2025-06-03 13:35:01 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Sofort-Job 9 nicht einschalten
|
||||
2025-06-03 13:35:01 - [scheduler] scheduler - [INFO] INFO - ⚡ Starte Sofort-Job 10: zi
|
||||
2025-06-03 13:35:03 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.104: HTTPConnectionPool(host='192.168.0.104', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x000002446CDC59D0>, 'Connection to 192.168.0.104 timed out. (connect timeout=2)'))
|
||||
2025-06-03 13:35:03 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Sofort-Job 10 nicht einschalten
|
||||
2025-06-03 13:35:03 - [scheduler] scheduler - [INFO] INFO - ⚡ Starte Sofort-Job 11: fee
|
||||
2025-06-03 13:35:05 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.104: HTTPConnectionPool(host='192.168.0.104', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x000002446CDC5590>, 'Connection to 192.168.0.104 timed out. (connect timeout=2)'))
|
||||
2025-06-03 13:35:05 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Sofort-Job 11 nicht einschalten
|
||||
2025-06-03 13:35:05 - [scheduler] scheduler - [INFO] INFO - ⚡ Starte Sofort-Job 12: fee
|
||||
2025-06-03 13:35:07 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.104: HTTPConnectionPool(host='192.168.0.104', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x000002446CDC67A0>, 'Connection to 192.168.0.104 timed out. (connect timeout=2)'))
|
||||
2025-06-03 13:35:07 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Sofort-Job 12 nicht einschalten
|
||||
2025-06-03 13:35:07 - [scheduler] scheduler - [INFO] INFO - ⚡ Starte Sofort-Job 13: e2
|
||||
2025-06-03 13:35:09 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x000002446CDC6BE0>, 'Connection to 192.168.0.103 timed out. (connect timeout=2)'))
|
||||
2025-06-03 13:35:09 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Sofort-Job 13 nicht einschalten
|
||||
2025-06-03 13:35:09 - [scheduler] scheduler - [INFO] INFO - ⚡ Starte Sofort-Job 14: e2
|
||||
2025-06-03 13:35:11 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x000002446CDC6F10>, 'Connection to 192.168.0.103 timed out. (connect timeout=2)'))
|
||||
2025-06-03 13:35:11 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Sofort-Job 14 nicht einschalten
|
||||
2025-06-03 13:35:11 - [scheduler] scheduler - [INFO] INFO - ⚡ Starte Sofort-Job 15: test
|
||||
2025-06-03 13:35:14 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x000002446CDC5370>, 'Connection to 192.168.0.103 timed out. (connect timeout=2)'))
|
||||
2025-06-03 13:35:14 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Sofort-Job 15 nicht einschalten
|
||||
2025-06-03 13:35:14 - [scheduler] scheduler - [INFO] INFO - ⚡ Starte Sofort-Job 16: test
|
||||
2025-06-03 13:35:16 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x000002446CDC5E10>, 'Connection to 192.168.0.103 timed out. (connect timeout=2)'))
|
||||
2025-06-03 13:35:16 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Sofort-Job 16 nicht einschalten
|
||||
2025-06-03 13:35:17 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 7: test
|
||||
2025-06-03 13:35:19 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x000002446CDC5D00>, 'Connection to 192.168.0.103 timed out. (connect timeout=2)'))
|
||||
2025-06-03 13:35:19 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 7 nicht einschalten
|
||||
2025-06-03 13:35:19 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 8: test
|
||||
2025-06-03 13:35:21 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x000002446CD56AD0>, 'Connection to 192.168.0.103 timed out. (connect timeout=2)'))
|
||||
2025-06-03 13:35:21 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 8 nicht einschalten
|
||||
2025-06-03 13:35:21 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 1: test
|
||||
2025-06-03 13:35:23 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x000002446CD559D0>, 'Connection to 192.168.0.103 timed out. (connect timeout=2)'))
|
||||
2025-06-03 13:35:23 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 1 nicht einschalten
|
||||
2025-06-03 13:35:23 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 2: test
|
||||
2025-06-03 13:35:25 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x000002446CC1F8A0>, 'Connection to 192.168.0.103 timed out. (connect timeout=2)'))
|
||||
2025-06-03 13:35:25 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 2 nicht einschalten
|
||||
2025-06-03 13:35:25 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 3: test
|
||||
2025-06-03 13:35:27 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x000002446CDC6CF0>, 'Connection to 192.168.0.103 timed out. (connect timeout=2)'))
|
||||
2025-06-03 13:35:27 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 3 nicht einschalten
|
||||
2025-06-03 13:35:27 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 4: test
|
||||
2025-06-03 13:35:29 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x000002446CDC6AD0>, 'Connection to 192.168.0.103 timed out. (connect timeout=2)'))
|
||||
2025-06-03 13:35:29 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 4 nicht einschalten
|
||||
2025-06-03 13:35:29 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 5: test
|
||||
2025-06-03 13:35:31 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x000002446CDC5E10>, 'Connection to 192.168.0.103 timed out. (connect timeout=2)'))
|
||||
2025-06-03 13:35:31 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 5 nicht einschalten
|
||||
2025-06-03 13:35:31 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 6: test
|
||||
2025-06-03 13:35:33 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x000002446CDC5040>, 'Connection to 192.168.0.103 timed out. (connect timeout=2)'))
|
||||
2025-06-03 13:35:33 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 6 nicht einschalten
|
||||
2025-06-03 13:35:33 - [scheduler] scheduler - [INFO] INFO - ⚡ Starte Sofort-Job 9: zi
|
||||
2025-06-03 13:35:36 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.104: HTTPConnectionPool(host='192.168.0.104', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x000002446CDC7020>, 'Connection to 192.168.0.104 timed out. (connect timeout=2)'))
|
||||
2025-06-03 13:35:36 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Sofort-Job 9 nicht einschalten
|
||||
2025-06-03 13:35:36 - [scheduler] scheduler - [INFO] INFO - ⚡ Starte Sofort-Job 10: zi
|
||||
2025-06-03 13:35:38 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.104: HTTPConnectionPool(host='192.168.0.104', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x000002446CDC6140>, 'Connection to 192.168.0.104 timed out. (connect timeout=2)'))
|
||||
2025-06-03 13:35:38 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Sofort-Job 10 nicht einschalten
|
||||
2025-06-03 13:35:38 - [scheduler] scheduler - [INFO] INFO - ⚡ Starte Sofort-Job 11: fee
|
||||
2025-06-03 13:35:40 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.104: HTTPConnectionPool(host='192.168.0.104', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x000002446CDC7130>, 'Connection to 192.168.0.104 timed out. (connect timeout=2)'))
|
||||
2025-06-03 13:35:40 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Sofort-Job 11 nicht einschalten
|
||||
2025-06-03 13:35:40 - [scheduler] scheduler - [INFO] INFO - ⚡ Starte Sofort-Job 12: fee
|
||||
2025-06-03 13:35:42 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.104: HTTPConnectionPool(host='192.168.0.104', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x000002446CDC4E20>, 'Connection to 192.168.0.104 timed out. (connect timeout=2)'))
|
||||
2025-06-03 13:35:42 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Sofort-Job 12 nicht einschalten
|
||||
2025-06-03 13:35:42 - [scheduler] scheduler - [INFO] INFO - ⚡ Starte Sofort-Job 13: e2
|
||||
2025-06-03 13:35:44 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x000002446CD56CF0>, 'Connection to 192.168.0.103 timed out. (connect timeout=2)'))
|
||||
2025-06-03 13:35:44 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Sofort-Job 13 nicht einschalten
|
||||
2025-06-03 13:35:44 - [scheduler] scheduler - [INFO] INFO - ⚡ Starte Sofort-Job 14: e2
|
||||
2025-06-03 13:35:46 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x000002446CD567A0>, 'Connection to 192.168.0.103 timed out. (connect timeout=2)'))
|
||||
2025-06-03 13:35:46 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Sofort-Job 14 nicht einschalten
|
||||
2025-06-03 13:35:46 - [scheduler] scheduler - [INFO] INFO - ⚡ Starte Sofort-Job 15: test
|
||||
2025-06-03 13:35:48 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x000002446CD56F10>, 'Connection to 192.168.0.103 timed out. (connect timeout=2)'))
|
||||
2025-06-03 13:35:48 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Sofort-Job 15 nicht einschalten
|
||||
2025-06-03 13:35:48 - [scheduler] scheduler - [INFO] INFO - ⚡ Starte Sofort-Job 16: test
|
||||
2025-06-03 13:35:51 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x000002446CDC7130>, 'Connection to 192.168.0.103 timed out. (connect timeout=2)'))
|
||||
2025-06-03 13:35:51 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Sofort-Job 16 nicht einschalten
|
||||
2025-06-03 13:35:52 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 7: test
|
||||
2025-06-03 13:35:54 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x000002446CDC6690>, 'Connection to 192.168.0.103 timed out. (connect timeout=2)'))
|
||||
2025-06-03 13:35:54 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 7 nicht einschalten
|
||||
2025-06-03 13:35:54 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 8: test
|
||||
2025-06-03 13:35:56 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x000002446CDC7020>, 'Connection to 192.168.0.103 timed out. (connect timeout=2)'))
|
||||
2025-06-03 13:35:56 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 8 nicht einschalten
|
||||
2025-06-03 13:35:56 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 1: test
|
||||
2025-06-03 13:35:58 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x000002446CDC5040>, 'Connection to 192.168.0.103 timed out. (connect timeout=2)'))
|
||||
2025-06-03 13:35:58 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 1 nicht einschalten
|
||||
2025-06-03 13:35:58 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 2: test
|
||||
2025-06-03 13:36:00 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x000002446CDC6E00>, 'Connection to 192.168.0.103 timed out. (connect timeout=2)'))
|
||||
2025-06-03 13:36:00 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 2 nicht einschalten
|
||||
2025-06-03 13:36:00 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 3: test
|
||||
2025-06-03 13:36:02 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x000002446CDC6360>, 'Connection to 192.168.0.103 timed out. (connect timeout=2)'))
|
||||
2025-06-03 13:36:02 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 3 nicht einschalten
|
||||
2025-06-03 13:36:02 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 4: test
|
||||
2025-06-03 13:36:05 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x000002446CDC6CF0>, 'Connection to 192.168.0.103 timed out. (connect timeout=2)'))
|
||||
2025-06-03 13:36:05 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 4 nicht einschalten
|
||||
2025-06-03 13:36:05 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 5: test
|
||||
2025-06-03 13:36:07 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x000002446CDC57B0>, 'Connection to 192.168.0.103 timed out. (connect timeout=2)'))
|
||||
2025-06-03 13:36:07 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 5 nicht einschalten
|
||||
2025-06-03 13:36:07 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 6: test
|
||||
2025-06-03 13:36:09 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x000002446CDC4F30>, 'Connection to 192.168.0.103 timed out. (connect timeout=2)'))
|
||||
2025-06-03 13:36:09 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 6 nicht einschalten
|
||||
2025-06-03 13:36:09 - [scheduler] scheduler - [INFO] INFO - ⚡ Starte Sofort-Job 9: zi
|
||||
2025-06-03 13:36:12 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.104: HTTPConnectionPool(host='192.168.0.104', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x000002446CD56E00>, 'Connection to 192.168.0.104 timed out. (connect timeout=2)'))
|
||||
2025-06-03 13:36:12 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Sofort-Job 9 nicht einschalten
|
||||
2025-06-03 13:36:12 - [scheduler] scheduler - [INFO] INFO - ⚡ Starte Sofort-Job 10: zi
|
||||
2025-06-03 13:36:14 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.104: HTTPConnectionPool(host='192.168.0.104', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x000002446CD568B0>, 'Connection to 192.168.0.104 timed out. (connect timeout=2)'))
|
||||
2025-06-03 13:36:14 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Sofort-Job 10 nicht einschalten
|
||||
2025-06-03 13:36:14 - [scheduler] scheduler - [INFO] INFO - ⚡ Starte Sofort-Job 11: fee
|
||||
2025-06-03 13:36:16 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.104: HTTPConnectionPool(host='192.168.0.104', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x000002446CC1F8A0>, 'Connection to 192.168.0.104 timed out. (connect timeout=2)'))
|
||||
2025-06-03 13:36:16 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Sofort-Job 11 nicht einschalten
|
||||
2025-06-03 13:36:16 - [scheduler] scheduler - [INFO] INFO - ⚡ Starte Sofort-Job 12: fee
|
||||
2025-06-03 13:36:18 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.104: HTTPConnectionPool(host='192.168.0.104', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x000002446CDC5AE0>, 'Connection to 192.168.0.104 timed out. (connect timeout=2)'))
|
||||
2025-06-03 13:36:18 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Sofort-Job 12 nicht einschalten
|
||||
2025-06-03 13:36:18 - [scheduler] scheduler - [INFO] INFO - ⚡ Starte Sofort-Job 13: e2
|
||||
2025-06-03 13:36:20 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x000002446CDC5480>, 'Connection to 192.168.0.103 timed out. (connect timeout=2)'))
|
||||
2025-06-03 13:36:20 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Sofort-Job 13 nicht einschalten
|
||||
2025-06-03 13:36:20 - [scheduler] scheduler - [INFO] INFO - ⚡ Starte Sofort-Job 14: e2
|
||||
2025-06-03 13:36:22 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x000002446CDC5D00>, 'Connection to 192.168.0.103 timed out. (connect timeout=2)'))
|
||||
2025-06-03 13:36:22 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Sofort-Job 14 nicht einschalten
|
||||
2025-06-03 13:36:22 - [scheduler] scheduler - [INFO] INFO - ⚡ Starte Sofort-Job 15: test
|
||||
2025-06-03 13:36:24 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x000002446CDC5370>, 'Connection to 192.168.0.103 timed out. (connect timeout=2)'))
|
||||
2025-06-03 13:36:24 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Sofort-Job 15 nicht einschalten
|
||||
2025-06-03 13:36:24 - [scheduler] scheduler - [INFO] INFO - ⚡ Starte Sofort-Job 16: test
|
||||
2025-06-03 13:36:26 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x000002446CDC5E10>, 'Connection to 192.168.0.103 timed out. (connect timeout=2)'))
|
||||
2025-06-03 13:36:26 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Sofort-Job 16 nicht einschalten
|
||||
2025-06-03 13:36:27 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 7: test
|
||||
2025-06-03 13:36:29 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x000002446CDC6580>, 'Connection to 192.168.0.103 timed out. (connect timeout=2)'))
|
||||
2025-06-03 13:36:29 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 7 nicht einschalten
|
||||
2025-06-03 13:36:29 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 8: test
|
||||
2025-06-03 13:36:32 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x000002446CDC6BE0>, 'Connection to 192.168.0.103 timed out. (connect timeout=2)'))
|
||||
2025-06-03 13:36:32 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 8 nicht einschalten
|
||||
2025-06-03 13:36:32 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 1: test
|
||||
2025-06-03 13:36:34 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x000002446CDC6140>, 'Connection to 192.168.0.103 timed out. (connect timeout=2)'))
|
||||
2025-06-03 13:36:34 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 1 nicht einschalten
|
||||
2025-06-03 13:36:34 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 2: test
|
||||
2025-06-03 13:36:36 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x000002446CD56AD0>, 'Connection to 192.168.0.103 timed out. (connect timeout=2)'))
|
||||
2025-06-03 13:36:36 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 2 nicht einschalten
|
||||
2025-06-03 13:36:36 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 3: test
|
||||
2025-06-03 13:36:38 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x000002446CD56F10>, 'Connection to 192.168.0.103 timed out. (connect timeout=2)'))
|
||||
2025-06-03 13:36:38 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 3 nicht einschalten
|
||||
2025-06-03 13:36:38 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 4: test
|
||||
2025-06-03 13:36:40 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x000002446CD567A0>, 'Connection to 192.168.0.103 timed out. (connect timeout=2)'))
|
||||
2025-06-03 13:36:40 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 4 nicht einschalten
|
||||
2025-06-03 13:36:40 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 5: test
|
||||
2025-06-03 13:36:42 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x000002446CDC6BE0>, 'Connection to 192.168.0.103 timed out. (connect timeout=2)'))
|
||||
2025-06-03 13:36:42 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 5 nicht einschalten
|
||||
2025-06-03 13:36:42 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 6: test
|
||||
2025-06-03 13:36:44 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x000002446CDC6580>, 'Connection to 192.168.0.103 timed out. (connect timeout=2)'))
|
||||
2025-06-03 13:36:44 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 6 nicht einschalten
|
||||
2025-06-03 13:36:44 - [scheduler] scheduler - [INFO] INFO - ⚡ Starte Sofort-Job 9: zi
|
||||
2025-06-03 13:36:46 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.104: HTTPConnectionPool(host='192.168.0.104', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x000002446CDC6360>, 'Connection to 192.168.0.104 timed out. (connect timeout=2)'))
|
||||
2025-06-03 13:36:46 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Sofort-Job 9 nicht einschalten
|
||||
2025-06-03 13:36:46 - [scheduler] scheduler - [INFO] INFO - ⚡ Starte Sofort-Job 10: zi
|
||||
2025-06-03 13:36:48 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.104: HTTPConnectionPool(host='192.168.0.104', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x000002446CDC5370>, 'Connection to 192.168.0.104 timed out. (connect timeout=2)'))
|
||||
2025-06-03 13:36:48 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Sofort-Job 10 nicht einschalten
|
||||
2025-06-03 13:36:48 - [scheduler] scheduler - [INFO] INFO - ⚡ Starte Sofort-Job 11: fee
|
||||
2025-06-03 13:36:51 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.104: HTTPConnectionPool(host='192.168.0.104', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x000002446CDC5D00>, 'Connection to 192.168.0.104 timed out. (connect timeout=2)'))
|
||||
2025-06-03 13:36:51 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Sofort-Job 11 nicht einschalten
|
||||
2025-06-03 13:36:51 - [scheduler] scheduler - [INFO] INFO - ⚡ Starte Sofort-Job 12: fee
|
||||
2025-06-03 13:36:53 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.104: HTTPConnectionPool(host='192.168.0.104', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x000002446CDC5480>, 'Connection to 192.168.0.104 timed out. (connect timeout=2)'))
|
||||
2025-06-03 13:36:53 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Sofort-Job 12 nicht einschalten
|
||||
2025-06-03 13:36:53 - [scheduler] scheduler - [INFO] INFO - ⚡ Starte Sofort-Job 13: e2
|
||||
2025-06-03 13:36:55 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x000002446CDC5AE0>, 'Connection to 192.168.0.103 timed out. (connect timeout=2)'))
|
||||
2025-06-03 13:36:55 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Sofort-Job 13 nicht einschalten
|
||||
2025-06-03 13:36:55 - [scheduler] scheduler - [INFO] INFO - ⚡ Starte Sofort-Job 14: e2
|
||||
2025-06-03 13:36:57 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x000002446CDC5590>, 'Connection to 192.168.0.103 timed out. (connect timeout=2)'))
|
||||
2025-06-03 13:36:57 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Sofort-Job 14 nicht einschalten
|
||||
2025-06-03 13:36:57 - [scheduler] scheduler - [INFO] INFO - ⚡ Starte Sofort-Job 15: test
|
||||
2025-06-03 13:36:59 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x000002446CDC59D0>, 'Connection to 192.168.0.103 timed out. (connect timeout=2)'))
|
||||
2025-06-03 13:36:59 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Sofort-Job 15 nicht einschalten
|
||||
2025-06-03 13:36:59 - [scheduler] scheduler - [INFO] INFO - ⚡ Starte Sofort-Job 16: test
|
||||
2025-06-03 13:37:01 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x000002446CD567A0>, 'Connection to 192.168.0.103 timed out. (connect timeout=2)'))
|
||||
2025-06-03 13:37:01 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Sofort-Job 16 nicht einschalten
|
||||
2025-06-03 13:37:02 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 7: test
|
||||
2025-06-03 13:37:05 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x000002446CD56E00>, 'Connection to 192.168.0.103 timed out. (connect timeout=2)'))
|
||||
2025-06-03 13:37:05 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 7 nicht einschalten
|
||||
2025-06-03 13:37:05 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 8: test
|
||||
2025-06-03 13:37:07 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x000002446CC1F8A0>, 'Connection to 192.168.0.103 timed out. (connect timeout=2)'))
|
||||
2025-06-03 13:37:07 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 8 nicht einschalten
|
||||
2025-06-03 13:37:07 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 1: test
|
||||
2025-06-03 13:37:09 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x000002446CDC56A0>, 'Connection to 192.168.0.103 timed out. (connect timeout=2)'))
|
||||
2025-06-03 13:37:09 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 1 nicht einschalten
|
||||
2025-06-03 13:37:09 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 2: test
|
||||
2025-06-03 13:37:11 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x000002446CDC59D0>, 'Connection to 192.168.0.103 timed out. (connect timeout=2)'))
|
||||
2025-06-03 13:37:11 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 2 nicht einschalten
|
||||
2025-06-03 13:37:11 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 3: test
|
||||
2025-06-03 13:37:13 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x000002446CDC5590>, 'Connection to 192.168.0.103 timed out. (connect timeout=2)'))
|
||||
2025-06-03 13:37:13 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 3 nicht einschalten
|
||||
2025-06-03 13:37:13 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 4: test
|
||||
2025-06-03 13:37:15 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x000002446CDC5AE0>, 'Connection to 192.168.0.103 timed out. (connect timeout=2)'))
|
||||
2025-06-03 13:37:15 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 4 nicht einschalten
|
||||
2025-06-03 13:37:15 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 5: test
|
||||
|
635
backend/setup.sh
635
backend/setup.sh
@ -348,67 +348,220 @@ check_root() {
|
||||
check_system_resources() {
|
||||
log "=== SYSTEM-RESSOURCEN PRÜFUNG ==="
|
||||
|
||||
# RAM prüfen
|
||||
local ram_mb=$(free -m | awk '/^Mem:/{print $2}')
|
||||
progress "Verfügbarer RAM: ${ram_mb}MB"
|
||||
# RAM prüfen (robuster)
|
||||
progress "Prüfe RAM..."
|
||||
local ram_mb=""
|
||||
|
||||
if [ -n "$ram_mb" ] && [ "$ram_mb" -eq "$ram_mb" ] 2>/dev/null && [ "$ram_mb" -lt 512 ]; then
|
||||
warning "⚠️ Wenig RAM verfügbar (${ram_mb}MB) - Installation könnte langsam sein"
|
||||
elif [ -n "$ram_mb" ] && [ "$ram_mb" -eq "$ram_mb" ] 2>/dev/null; then
|
||||
success "✅ Ausreichend RAM verfügbar (${ram_mb}MB)"
|
||||
# Verschiedene Methoden zur RAM-Ermittlung
|
||||
if command -v free >/dev/null 2>&1; then
|
||||
ram_mb=$(free -m 2>/dev/null | awk '/^Mem:/{print $2}' 2>/dev/null || echo "")
|
||||
fi
|
||||
|
||||
# Fallback über /proc/meminfo
|
||||
if [ -z "$ram_mb" ] && [ -f "/proc/meminfo" ]; then
|
||||
ram_mb=$(grep '^MemTotal:' /proc/meminfo 2>/dev/null | awk '{print int($2/1024)}' 2>/dev/null || echo "")
|
||||
fi
|
||||
|
||||
if [ -n "$ram_mb" ] && [ "$ram_mb" -gt 0 ] 2>/dev/null; then
|
||||
progress "Verfügbarer RAM: ${ram_mb}MB"
|
||||
|
||||
if [ "$ram_mb" -lt 512 ] 2>/dev/null; then
|
||||
warning "⚠️ Wenig RAM verfügbar (${ram_mb}MB) - Installation könnte langsam sein"
|
||||
else
|
||||
success "✅ Ausreichend RAM verfügbar (${ram_mb}MB)"
|
||||
fi
|
||||
else
|
||||
warning "⚠️ RAM-Größe konnte nicht ermittelt werden"
|
||||
debug "RAM-Ermittlung fehlgeschlagen: free-Output: $(free -m 2>&1 || echo 'Befehl nicht verfügbar')"
|
||||
fi
|
||||
|
||||
# Festplattenplatz prüfen
|
||||
local disk_free_gb=$(df / | awk 'NR==2{printf "%.1f", $4/1024/1024}')
|
||||
progress "Verfügbarer Festplattenplatz: ${disk_free_gb}GB"
|
||||
# Festplattenplatz prüfen (robuster ohne bc)
|
||||
progress "Prüfe Festplattenplatz..."
|
||||
local disk_free_gb=""
|
||||
local disk_free_mb=""
|
||||
|
||||
# Konvertiere zu Ganzzahl für Vergleich (GB * 10 für eine Dezimalstelle)
|
||||
local disk_free_int=$(echo "$disk_free_gb * 10" | bc 2>/dev/null | cut -d. -f1)
|
||||
local min_required_int=20 # 2.0 GB * 10
|
||||
|
||||
if [ -z "$disk_free_int" ] || [ "$disk_free_int" -lt "$min_required_int" ]; then
|
||||
warning "⚠️ Wenig Festplattenplatz verfügbar (${disk_free_gb}GB)"
|
||||
if command -v df >/dev/null 2>&1; then
|
||||
# Hole Festplattenplatz in MB
|
||||
disk_free_mb=$(df / 2>/dev/null | awk 'NR==2{print int($4/1024)}' 2>/dev/null || echo "")
|
||||
|
||||
if [ -n "$disk_free_mb" ] && [ "$disk_free_mb" -gt 0 ] 2>/dev/null; then
|
||||
# Berechne GB ohne bc (einfache Division)
|
||||
disk_free_gb=$(awk -v mb="$disk_free_mb" 'BEGIN{printf "%.1f", mb/1024}' 2>/dev/null || echo "$((disk_free_mb/1024))")
|
||||
|
||||
progress "Verfügbarer Festplattenplatz: ${disk_free_gb}GB (${disk_free_mb}MB)"
|
||||
|
||||
# Prüfe ob mindestens 2GB verfügbar (2048 MB)
|
||||
if [ "$disk_free_mb" -lt 2048 ] 2>/dev/null; then
|
||||
warning "⚠️ Wenig Festplattenplatz verfügbar (${disk_free_gb}GB)"
|
||||
else
|
||||
success "✅ Ausreichend Festplattenplatz verfügbar (${disk_free_gb}GB)"
|
||||
fi
|
||||
else
|
||||
warning "⚠️ Festplattenplatz konnte nicht ermittelt werden"
|
||||
debug "Disk-Ermittlung fehlgeschlagen: df-Output: $(df / 2>&1 || echo 'Befehl nicht verfügbar')"
|
||||
fi
|
||||
else
|
||||
success "✅ Ausreichend Festplattenplatz verfügbar (${disk_free_gb}GB)"
|
||||
warning "⚠️ df-Befehl nicht verfügbar - kann Festplattenplatz nicht prüfen"
|
||||
fi
|
||||
|
||||
# CPU prüfen
|
||||
local cpu_count=$(nproc)
|
||||
local cpu_model=$(grep "model name" /proc/cpuinfo | head -1 | cut -d: -f2 | xargs)
|
||||
progress "CPU: $cpu_count Kern(e) - $cpu_model"
|
||||
# CPU prüfen (robuster)
|
||||
progress "Prüfe CPU..."
|
||||
local cpu_count=""
|
||||
local cpu_model=""
|
||||
|
||||
log "✅ System-Ressourcen validiert"
|
||||
# CPU-Anzahl ermitteln
|
||||
if command -v nproc >/dev/null 2>&1; then
|
||||
cpu_count=$(nproc 2>/dev/null || echo "")
|
||||
fi
|
||||
|
||||
if [ -z "$cpu_count" ] && [ -f "/proc/cpuinfo" ]; then
|
||||
cpu_count=$(grep -c '^processor' /proc/cpuinfo 2>/dev/null || echo "")
|
||||
fi
|
||||
|
||||
# CPU-Modell ermitteln
|
||||
if [ -f "/proc/cpuinfo" ]; then
|
||||
cpu_model=$(grep "model name" /proc/cpuinfo 2>/dev/null | head -1 | cut -d: -f2 2>/dev/null | sed 's/^[[:space:]]*//' 2>/dev/null || echo "Unbekannt")
|
||||
fi
|
||||
|
||||
if [ -n "$cpu_count" ] && [ "$cpu_count" -gt 0 ] 2>/dev/null; then
|
||||
progress "CPU: $cpu_count Kern(e) - $cpu_model"
|
||||
success "✅ CPU-Information erfolgreich ermittelt"
|
||||
else
|
||||
progress "CPU: Unbekannte Anzahl Kerne - $cpu_model"
|
||||
warning "⚠️ CPU-Kern-Anzahl konnte nicht ermittelt werden"
|
||||
debug "CPU-Ermittlung fehlgeschlagen: nproc-Output: $(nproc 2>&1 || echo 'Befehl nicht verfügbar')"
|
||||
fi
|
||||
|
||||
log "✅ System-Ressourcen-Prüfung abgeschlossen"
|
||||
}
|
||||
|
||||
check_debian_system() {
|
||||
if [ ! -f /etc/debian_version ]; then
|
||||
error "Dieses Skript ist nur für Debian/Raspbian-Systeme geeignet!"
|
||||
progress "Prüfe Debian/Raspbian-System..."
|
||||
|
||||
# Robuste Debian-Erkennung
|
||||
local is_debian=false
|
||||
local debian_version="Unbekannt"
|
||||
|
||||
# Verschiedene Methoden zur Debian-Erkennung
|
||||
if [ -f /etc/debian_version ]; then
|
||||
debian_version=$(cat /etc/debian_version 2>/dev/null | head -1 | tr -d '\n\r' || echo "Unbekannt")
|
||||
is_debian=true
|
||||
debug "Debian erkannt über /etc/debian_version: $debian_version"
|
||||
fi
|
||||
|
||||
local debian_version=$(cat /etc/debian_version 2>/dev/null || echo "Unbekannt")
|
||||
log "✅ Debian/Raspbian-System erkannt (Version: $debian_version)"
|
||||
|
||||
# Prüfe auf Raspberry Pi
|
||||
if [ -f /proc/device-tree/model ]; then
|
||||
local pi_model=$(cat /proc/device-tree/model 2>/dev/null | tr -d '\0' || echo "Unbekannt")
|
||||
info "Raspberry Pi Modell: $pi_model"
|
||||
|
||||
# Raspberry Pi spezifische Optimierungen
|
||||
if [[ "$pi_model" =~ "Raspberry Pi" ]]; then
|
||||
progress "Aktiviere Raspberry Pi spezifische Optimierungen..."
|
||||
export RASPBERRY_PI_DETECTED=1
|
||||
# Fallback über os-release
|
||||
if [ "$is_debian" = false ] && [ -f /etc/os-release ]; then
|
||||
local os_id=$(grep '^ID=' /etc/os-release 2>/dev/null | cut -d= -f2 | tr -d '"' || echo "")
|
||||
if [[ "$os_id" =~ ^(debian|raspbian|ubuntu)$ ]]; then
|
||||
is_debian=true
|
||||
local os_version=$(grep '^VERSION=' /etc/os-release 2>/dev/null | cut -d= -f2 | tr -d '"' || echo "Unbekannt")
|
||||
debian_version="$os_id $os_version"
|
||||
debug "Debian-basiertes System erkannt über os-release: $debian_version"
|
||||
fi
|
||||
fi
|
||||
|
||||
# Architektur prüfen
|
||||
local arch=$(uname -m)
|
||||
info "System-Architektur: $arch"
|
||||
# Fallback über lsb_release
|
||||
if [ "$is_debian" = false ] && command -v lsb_release >/dev/null 2>&1; then
|
||||
local lsb_id=$(lsb_release -si 2>/dev/null | tr '[:upper:]' '[:lower:]' || echo "")
|
||||
if [[ "$lsb_id" =~ ^(debian|raspbian|ubuntu)$ ]]; then
|
||||
is_debian=true
|
||||
debian_version="$lsb_id $(lsb_release -sr 2>/dev/null || echo 'Unbekannt')"
|
||||
debug "Debian-basiertes System erkannt über lsb_release: $debian_version"
|
||||
fi
|
||||
fi
|
||||
|
||||
# Kernel-Version prüfen
|
||||
local kernel=$(uname -r)
|
||||
info "Kernel-Version: $kernel"
|
||||
if [ "$is_debian" = false ]; then
|
||||
warning "⚠️ System ist möglicherweise nicht Debian/Raspbian-basiert!"
|
||||
warning "⚠️ Installation wird fortgesetzt, könnte aber fehlschlagen"
|
||||
debug "System-Erkennung fehlgeschlagen. Verfügbare Info:"
|
||||
debug " - /etc/debian_version: $([ -f /etc/debian_version ] && echo 'vorhanden' || echo 'nicht vorhanden')"
|
||||
debug " - /etc/os-release: $([ -f /etc/os-release ] && grep '^ID=' /etc/os-release 2>/dev/null || echo 'nicht verfügbar')"
|
||||
debug " - lsb_release: $(command -v lsb_release >/dev/null 2>&1 && lsb_release -si 2>/dev/null || echo 'nicht verfügbar')"
|
||||
else
|
||||
log "✅ Debian/Raspbian-basiertes System erkannt (Version: $debian_version)"
|
||||
fi
|
||||
|
||||
# Prüfe auf Raspberry Pi (robuster)
|
||||
progress "Prüfe Raspberry Pi Hardware..."
|
||||
local is_raspberry_pi=false
|
||||
local pi_model="Unbekannt"
|
||||
|
||||
# Methode 1: Device Tree Model
|
||||
if [ -f /proc/device-tree/model ]; then
|
||||
pi_model=$(cat /proc/device-tree/model 2>/dev/null | tr -d '\0\n\r' | head -c 100 || echo "")
|
||||
if [[ "$pi_model" =~ [Rr]aspberry.*[Pp]i ]]; then
|
||||
is_raspberry_pi=true
|
||||
debug "Raspberry Pi erkannt über device-tree: $pi_model"
|
||||
fi
|
||||
fi
|
||||
|
||||
# Methode 2: CPU Info
|
||||
if [ "$is_raspberry_pi" = false ] && [ -f /proc/cpuinfo ]; then
|
||||
local cpu_hardware=$(grep '^Hardware' /proc/cpuinfo 2>/dev/null | cut -d: -f2 | sed 's/^[[:space:]]*//' | head -1 || echo "")
|
||||
local cpu_model=$(grep '^Model' /proc/cpuinfo 2>/dev/null | cut -d: -f2 | sed 's/^[[:space:]]*//' | head -1 || echo "")
|
||||
|
||||
if [[ "$cpu_hardware" =~ [Bb][Cc][Mm] ]] || [[ "$cpu_model" =~ [Rr]aspberry.*[Pp]i ]]; then
|
||||
is_raspberry_pi=true
|
||||
pi_model="$cpu_model ($cpu_hardware)"
|
||||
debug "Raspberry Pi erkannt über cpuinfo: $pi_model"
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ "$is_raspberry_pi" = true ]; then
|
||||
info "🍓 Raspberry Pi erkannt: $pi_model"
|
||||
progress "Aktiviere Raspberry Pi spezifische Optimierungen..."
|
||||
export RASPBERRY_PI_DETECTED=1
|
||||
debug "Raspberry Pi Optimierungen aktiviert"
|
||||
else
|
||||
info "💻 Standard-PC/Server System (kein Raspberry Pi)"
|
||||
debug "Kein Raspberry Pi erkannt. Hardware-Info:"
|
||||
debug " - Device Tree: $([ -f /proc/device-tree/model ] && cat /proc/device-tree/model 2>/dev/null | tr -d '\0' || echo 'nicht verfügbar')"
|
||||
debug " - CPU Hardware: $(grep '^Hardware' /proc/cpuinfo 2>/dev/null | cut -d: -f2 | sed 's/^[[:space:]]*//' || echo 'nicht verfügbar')"
|
||||
fi
|
||||
|
||||
# System-Architektur prüfen (robuster)
|
||||
progress "Prüfe System-Architektur..."
|
||||
local arch=""
|
||||
|
||||
if command -v uname >/dev/null 2>&1; then
|
||||
arch=$(uname -m 2>/dev/null || echo "Unbekannt")
|
||||
info "📐 System-Architektur: $arch"
|
||||
|
||||
# Architektur-spezifische Hinweise
|
||||
case "$arch" in
|
||||
"aarch64"|"arm64")
|
||||
info " → 64-Bit ARM Architektur erkannt"
|
||||
;;
|
||||
"armv7l"|"armv6l")
|
||||
info " → 32-Bit ARM Architektur erkannt"
|
||||
;;
|
||||
"x86_64"|"amd64")
|
||||
info " → 64-Bit x86 Architektur erkannt"
|
||||
;;
|
||||
"i386"|"i686")
|
||||
info " → 32-Bit x86 Architektur erkannt"
|
||||
;;
|
||||
*)
|
||||
warning "⚠️ Unbekannte Architektur: $arch"
|
||||
;;
|
||||
esac
|
||||
else
|
||||
warning "⚠️ uname-Befehl nicht verfügbar - kann Architektur nicht ermitteln"
|
||||
fi
|
||||
|
||||
# Kernel-Version prüfen (robuster)
|
||||
progress "Prüfe Kernel-Version..."
|
||||
local kernel=""
|
||||
|
||||
if command -v uname >/dev/null 2>&1; then
|
||||
kernel=$(uname -r 2>/dev/null || echo "Unbekannt")
|
||||
info "🐧 Kernel-Version: $kernel"
|
||||
debug "Vollständige Kernel-Info: $(uname -a 2>/dev/null || echo 'Nicht verfügbar')"
|
||||
else
|
||||
warning "⚠️ Kernel-Version konnte nicht ermittelt werden"
|
||||
fi
|
||||
|
||||
log "✅ System-Analyse abgeschlossen"
|
||||
}
|
||||
|
||||
check_internet_connection() {
|
||||
@ -416,51 +569,132 @@ check_internet_connection() {
|
||||
|
||||
local connection_ok=false
|
||||
local test_method=""
|
||||
local debug_info=""
|
||||
|
||||
# Methode 1: DNS-Auflösung zuerst (schnellster Test)
|
||||
# Methode 1: DNS-Auflösung (robuster)
|
||||
progress "Teste DNS-Auflösung..."
|
||||
local dns_hosts=("google.com" "cloudflare.com" "github.com" "8.8.8.8")
|
||||
local dns_hosts=("8.8.8.8" "1.1.1.1" "google.com" "cloudflare.com")
|
||||
|
||||
for host in "${dns_hosts[@]}"; do
|
||||
if nslookup "$host" >/dev/null 2>&1; then
|
||||
connection_ok=true
|
||||
test_method="DNS-Auflösung (nslookup: $host)"
|
||||
break
|
||||
elif getent hosts "$host" >/dev/null 2>&1; then
|
||||
connection_ok=true
|
||||
test_method="DNS-Auflösung (getent: $host)"
|
||||
break
|
||||
debug_info="${debug_info}Teste DNS für $host: "
|
||||
|
||||
# Teste nslookup
|
||||
if command -v nslookup >/dev/null 2>&1; then
|
||||
if timeout 10 nslookup "$host" >/dev/null 2>&1; then
|
||||
connection_ok=true
|
||||
test_method="DNS-Auflösung (nslookup: $host)"
|
||||
debug_info="${debug_info}Erfolg mit nslookup. "
|
||||
break
|
||||
fi
|
||||
debug_info="${debug_info}nslookup fehlgeschlagen. "
|
||||
fi
|
||||
|
||||
# Teste getent hosts
|
||||
if [ "$connection_ok" = false ] && command -v getent >/dev/null 2>&1; then
|
||||
if timeout 8 getent hosts "$host" >/dev/null 2>&1; then
|
||||
connection_ok=true
|
||||
test_method="DNS-Auflösung (getent: $host)"
|
||||
debug_info="${debug_info}Erfolg mit getent. "
|
||||
break
|
||||
fi
|
||||
debug_info="${debug_info}getent fehlgeschlagen. "
|
||||
fi
|
||||
|
||||
# Teste ping als Fallback
|
||||
if [ "$connection_ok" = false ] && command -v ping >/dev/null 2>&1; then
|
||||
if timeout 5 ping -c 1 "$host" >/dev/null 2>&1; then
|
||||
connection_ok=true
|
||||
test_method="Netzwerk-Verbindung (ping: $host)"
|
||||
debug_info="${debug_info}Erfolg mit ping. "
|
||||
break
|
||||
fi
|
||||
debug_info="${debug_info}ping fehlgeschlagen. "
|
||||
fi
|
||||
done
|
||||
|
||||
# Methode 2: HTTP/HTTPS-Tests
|
||||
debug "DNS-Test Details: $debug_info"
|
||||
|
||||
# Methode 2: HTTP/HTTPS-Tests (robuster)
|
||||
if [ "$connection_ok" = false ]; then
|
||||
progress "Teste HTTP/HTTPS-Verbindungen..."
|
||||
local http_urls=("http://detectportal.firefox.com/success.txt" "https://www.google.com" "http://httpbin.org/get")
|
||||
local http_urls=("http://connectivitycheck.gstatic.com/generate_204" "http://detectportal.firefox.com/success.txt" "https://www.google.com")
|
||||
|
||||
for url in "${http_urls[@]}"; do
|
||||
debug_info="Teste HTTP für $url: "
|
||||
|
||||
# Teste curl
|
||||
if command -v curl >/dev/null 2>&1; then
|
||||
if curl -s --connect-timeout 10 --max-time 15 "$url" >/dev/null 2>&1; then
|
||||
if timeout 15 curl -s --connect-timeout 8 --max-time 12 --fail "$url" >/dev/null 2>&1; then
|
||||
connection_ok=true
|
||||
test_method="HTTP/HTTPS (curl: $url)"
|
||||
debug_info="${debug_info}Erfolg mit curl. "
|
||||
break
|
||||
fi
|
||||
elif command -v wget >/dev/null 2>&1; then
|
||||
if wget -q --timeout=10 --tries=1 "$url" -O /dev/null 2>/dev/null; then
|
||||
debug_info="${debug_info}curl fehlgeschlagen. "
|
||||
fi
|
||||
|
||||
# Teste wget
|
||||
if [ "$connection_ok" = false ] && command -v wget >/dev/null 2>&1; then
|
||||
if timeout 15 wget -q --timeout=8 --tries=1 --spider "$url" 2>/dev/null; then
|
||||
connection_ok=true
|
||||
test_method="HTTP/HTTPS (wget: $url)"
|
||||
debug_info="${debug_info}Erfolg mit wget. "
|
||||
break
|
||||
fi
|
||||
debug_info="${debug_info}wget fehlgeschlagen. "
|
||||
fi
|
||||
|
||||
debug "HTTP-Test Details: $debug_info"
|
||||
done
|
||||
fi
|
||||
|
||||
# Methode 3: APT-Repository-Test
|
||||
# Methode 3: Lokale Netzwerk-Interface Prüfung
|
||||
if [ "$connection_ok" = false ]; then
|
||||
progress "Teste APT-Repository-Zugang..."
|
||||
if apt-get update -qq 2>/dev/null; then
|
||||
progress "Prüfe lokale Netzwerk-Interfaces..."
|
||||
|
||||
local has_network_interface=false
|
||||
|
||||
# Prüfe ob aktive Netzwerk-Interfaces vorhanden sind
|
||||
if command -v ip >/dev/null 2>&1; then
|
||||
local active_interfaces=$(ip route show default 2>/dev/null | awk '{print $5}' | head -1)
|
||||
if [ -n "$active_interfaces" ]; then
|
||||
has_network_interface=true
|
||||
local interface_ip=$(ip route get 1.1.1.1 2>/dev/null | awk '{print $7}' | head -1 || echo "Unbekannt")
|
||||
info " 📡 Aktives Interface: $active_interfaces (IP: $interface_ip)"
|
||||
debug "Netzwerk-Interface gefunden: $active_interfaces mit IP $interface_ip"
|
||||
fi
|
||||
fi
|
||||
|
||||
# Fallback über ifconfig
|
||||
if [ "$has_network_interface" = false ] && command -v ifconfig >/dev/null 2>&1; then
|
||||
local active_interfaces=$(ifconfig 2>/dev/null | grep -E '^[a-zA-Z]' | grep -v '^lo' | head -1 | cut -d: -f1)
|
||||
if [ -n "$active_interfaces" ]; then
|
||||
has_network_interface=true
|
||||
info " 📡 Interface erkannt: $active_interfaces"
|
||||
debug "Netzwerk-Interface über ifconfig gefunden: $active_interfaces"
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ "$has_network_interface" = true ]; then
|
||||
warning "⚠️ Netzwerk-Interface aktiv, aber Internet nicht erreichbar"
|
||||
warning " → Möglicherweise Firewall, Proxy oder DNS-Problem"
|
||||
else
|
||||
warning "⚠️ Keine aktiven Netzwerk-Interfaces gefunden"
|
||||
warning " → Bitte prüfen Sie die Netzwerk-Konfiguration"
|
||||
fi
|
||||
fi
|
||||
|
||||
# Methode 4: APT-Repository-Test (nur als letzter Test)
|
||||
if [ "$connection_ok" = false ]; then
|
||||
progress "Teste APT-Repository-Zugang (kann länger dauern)..."
|
||||
|
||||
# Sehr kurzer APT-Test ohne Update
|
||||
if timeout 30 apt-get -qq --print-uris update 2>/dev/null | grep -q 'http'; then
|
||||
connection_ok=true
|
||||
test_method="APT-Repository-Zugang"
|
||||
test_method="APT-Repository-Konfiguration"
|
||||
debug "APT-Repositories scheinen konfiguriert zu sein"
|
||||
else
|
||||
debug "APT-Repository-Test fehlgeschlagen"
|
||||
fi
|
||||
fi
|
||||
|
||||
@ -469,17 +703,35 @@ check_internet_connection() {
|
||||
success "✅ Internetverbindung verfügbar"
|
||||
info " 🔍 Erkannt via: $test_method"
|
||||
|
||||
# Zusätzliche Informationen
|
||||
# Zusätzliche Informationen (robust)
|
||||
if command -v curl >/dev/null 2>&1; then
|
||||
local external_ip=$(curl -s --connect-timeout 5 ifconfig.me 2>/dev/null || curl -s --connect-timeout 5 ipinfo.io/ip 2>/dev/null || echo "Unbekannt")
|
||||
if [ "$external_ip" != "Unbekannt" ]; then
|
||||
info " 🌐 Externe IP: $external_ip"
|
||||
progress "Ermittle externe IP-Adresse..."
|
||||
local external_ip=""
|
||||
local ip_services=("ifconfig.me" "ipinfo.io/ip" "icanhazip.com")
|
||||
|
||||
for service in "${ip_services[@]}"; do
|
||||
external_ip=$(timeout 8 curl -s --connect-timeout 5 "$service" 2>/dev/null | head -1 | tr -d '\n\r' || echo "")
|
||||
if [ -n "$external_ip" ] && [[ "$external_ip" =~ ^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+$ ]]; then
|
||||
info " 🌐 Externe IP: $external_ip"
|
||||
debug "Externe IP ermittelt über $service: $external_ip"
|
||||
break
|
||||
fi
|
||||
done
|
||||
|
||||
if [ -z "$external_ip" ]; then
|
||||
debug "Externe IP konnte nicht ermittelt werden"
|
||||
fi
|
||||
fi
|
||||
else
|
||||
warning "⚠️ Keine Internetverbindung erkannt"
|
||||
info " → Installation wird fortgesetzt, aber Downloads könnten fehlschlagen"
|
||||
warning " → Bitte prüfen Sie die Netzwerkverbindung!"
|
||||
|
||||
# Debug-Informationen bei fehlgeschlagener Verbindung
|
||||
debug "Internet-Verbindungstest fehlgeschlagen. System-Info:"
|
||||
debug " - DNS-Server: $(cat /etc/resolv.conf 2>/dev/null | grep nameserver | head -3 || echo 'Nicht verfügbar')"
|
||||
debug " - Default Route: $(ip route show default 2>/dev/null || echo 'Nicht verfügbar')"
|
||||
debug " - Network Interfaces: $(ip addr show 2>/dev/null | grep -E '^[0-9]+:' | cut -d: -f2 | tr -d ' ' | grep -v lo | head -3 || echo 'Nicht verfügbar')"
|
||||
fi
|
||||
}
|
||||
|
||||
@ -895,145 +1147,152 @@ install_nodejs_npm() {
|
||||
|
||||
# =========================== NETZWERK-SICHERHEIT ===========================
|
||||
configure_network_security() {
|
||||
log "=== KONFIGURIERE ERWEITERTE NETZWERK-SICHERHEIT ==="
|
||||
log "=== KONFIGURIERE ROBUSTE NETZWERK-SICHERHEIT ==="
|
||||
|
||||
# IPv6 vollständig deaktivieren
|
||||
progress "Deaktiviere IPv6..."
|
||||
# IPv6 vorsichtig deaktivieren
|
||||
progress "Deaktiviere IPv6 (robust)..."
|
||||
|
||||
# IPv6 in GRUB deaktivieren
|
||||
if [ -f /etc/default/grub ]; then
|
||||
cp /etc/default/grub /etc/default/grub.backup
|
||||
sed -i 's/GRUB_CMDLINE_LINUX_DEFAULT="[^"]*/& ipv6.disable=1/' /etc/default/grub
|
||||
sed -i 's/GRUB_CMDLINE_LINUX="[^"]*/& ipv6.disable=1/' /etc/default/grub
|
||||
update-grub 2>/dev/null || true
|
||||
# IPv6 in GRUB deaktivieren (nur wenn GRUB vorhanden)
|
||||
if [ -f /etc/default/grub ] && command -v update-grub >/dev/null 2>&1; then
|
||||
progress "Deaktiviere IPv6 in GRUB..."
|
||||
if cp /etc/default/grub /etc/default/grub.backup 2>/dev/null; then
|
||||
# Prüfe ob ipv6.disable bereits gesetzt ist
|
||||
if ! grep -q "ipv6.disable=1" /etc/default/grub; then
|
||||
sed -i 's/GRUB_CMDLINE_LINUX_DEFAULT="[^"]*/& ipv6.disable=1/' /etc/default/grub 2>/dev/null || true
|
||||
sed -i 's/GRUB_CMDLINE_LINUX="[^"]*/& ipv6.disable=1/' /etc/default/grub 2>/dev/null || true
|
||||
|
||||
if timeout 30 update-grub >/dev/null 2>&1; then
|
||||
success "✅ IPv6 in GRUB deaktiviert"
|
||||
else
|
||||
warning "⚠️ GRUB-Update fehlgeschlagen"
|
||||
debug "GRUB-Update Fehler: $(update-grub 2>&1 || echo 'Befehl fehlgeschlagen')"
|
||||
fi
|
||||
else
|
||||
info "IPv6 bereits in GRUB deaktiviert"
|
||||
fi
|
||||
else
|
||||
warning "⚠️ GRUB-Backup konnte nicht erstellt werden"
|
||||
fi
|
||||
else
|
||||
info "GRUB nicht verfügbar oder kein update-grub - überspringe"
|
||||
fi
|
||||
|
||||
# IPv6 in sysctl deaktivieren
|
||||
cat >> /etc/sysctl.conf << 'EOF'
|
||||
|
||||
# IPv6 und Netzwerk-Sicherheit in sysctl konfigurieren (robust)
|
||||
progress "Erstelle robuste sysctl-Konfiguration..."
|
||||
|
||||
# Backup der bestehenden sysctl.conf
|
||||
if [ -f /etc/sysctl.conf ]; then
|
||||
cp /etc/sysctl.conf /etc/sysctl.conf.backup.$(date +%Y%m%d_%H%M%S) 2>/dev/null || true
|
||||
fi
|
||||
|
||||
# Erstelle separate sysctl-Datei für MYP (sicherer)
|
||||
local myp_sysctl_file="/etc/sysctl.d/99-myp-security.conf"
|
||||
|
||||
# Nur kritische und kompatible Einstellungen setzen
|
||||
cat > "$myp_sysctl_file" << 'EOF'
|
||||
# ===================================================================
|
||||
# MYP Netzwerk-Sicherheitskonfiguration
|
||||
# MYP Basis-Sicherheitskonfiguration (kompatibel)
|
||||
# ===================================================================
|
||||
|
||||
# IPv6 vollständig deaktivieren
|
||||
# IPv6 deaktivieren (nur wenn unterstützt)
|
||||
net.ipv6.conf.all.disable_ipv6 = 1
|
||||
net.ipv6.conf.default.disable_ipv6 = 1
|
||||
net.ipv6.conf.lo.disable_ipv6 = 1
|
||||
|
||||
# IP-Spoofing-Schutz aktivieren
|
||||
net.ipv4.conf.all.rp_filter = 1
|
||||
net.ipv4.conf.default.rp_filter = 1
|
||||
|
||||
# Source-Routing deaktivieren (verhindert IP-Spoofing)
|
||||
net.ipv4.conf.all.accept_source_route = 0
|
||||
net.ipv4.conf.default.accept_source_route = 0
|
||||
|
||||
# ICMP-Redirects ignorieren (verhindert Man-in-the-Middle)
|
||||
# Grundlegende Netzwerk-Sicherheit
|
||||
net.ipv4.ip_forward = 0
|
||||
net.ipv4.tcp_syncookies = 1
|
||||
net.ipv4.conf.all.accept_redirects = 0
|
||||
net.ipv4.conf.default.accept_redirects = 0
|
||||
net.ipv4.conf.all.send_redirects = 0
|
||||
|
||||
# Secure ICMP-Redirects ignorieren
|
||||
net.ipv4.conf.all.secure_redirects = 0
|
||||
net.ipv4.conf.default.secure_redirects = 0
|
||||
|
||||
# SYN-Flood-Schutz aktivieren
|
||||
net.ipv4.tcp_syncookies = 1
|
||||
net.ipv4.tcp_max_syn_backlog = 2048
|
||||
net.ipv4.tcp_synack_retries = 2
|
||||
net.ipv4.tcp_syn_retries = 5
|
||||
|
||||
# TCP-RFC-Compliance (verhindert aggressive Paketwiederholungen)
|
||||
net.ipv4.tcp_retries1 = 3
|
||||
net.ipv4.tcp_retries2 = 15
|
||||
net.ipv4.tcp_orphan_retries = 3
|
||||
|
||||
# TCP-Window-Skalierung optimieren (geringere Netzwerkauslastung)
|
||||
net.ipv4.tcp_window_scaling = 1
|
||||
net.ipv4.tcp_rmem = 4096 65536 16777216
|
||||
net.ipv4.tcp_wmem = 4096 65536 16777216
|
||||
net.core.rmem_max = 16777216
|
||||
net.core.wmem_max = 16777216
|
||||
net.core.netdev_max_backlog = 5000
|
||||
|
||||
# Broadcast-Pings ignorieren (verhindert Smurf-Angriffe)
|
||||
# ICMP-Sicherheit
|
||||
net.ipv4.icmp_echo_ignore_broadcasts = 1
|
||||
|
||||
# Bogus ICMP-Antworten ignorieren
|
||||
net.ipv4.icmp_ignore_bogus_error_responses = 1
|
||||
|
||||
# Paketweiterleitung verhindern (Router-Funktionalität deaktivieren)
|
||||
net.ipv4.ip_forward = 0
|
||||
# Source Routing deaktivieren
|
||||
net.ipv4.conf.all.accept_source_route = 0
|
||||
net.ipv4.conf.default.accept_source_route = 0
|
||||
|
||||
# Martian-Pakete loggen (verdächtige Pakete)
|
||||
net.ipv4.conf.all.log_martians = 1
|
||||
net.ipv4.conf.default.log_martians = 1
|
||||
EOF
|
||||
|
||||
# TCP-Timestamps deaktivieren (verhindert Fingerprinting)
|
||||
net.ipv4.tcp_timestamps = 0
|
||||
|
||||
# TCP-SACK deaktivieren (verhindert bestimmte Angriffe)
|
||||
net.ipv4.tcp_sack = 0
|
||||
|
||||
# TCP-Keepalive optimieren
|
||||
net.ipv4.tcp_keepalive_time = 7200
|
||||
net.ipv4.tcp_keepalive_probes = 9
|
||||
net.ipv4.tcp_keepalive_intvl = 75
|
||||
|
||||
# Memory-Limits für Netzwerk-Buffers
|
||||
net.core.rmem_default = 262144
|
||||
net.core.wmem_default = 262144
|
||||
|
||||
# Schutz vor Time-Wait-Assassination
|
||||
net.ipv4.tcp_rfc1337 = 1
|
||||
# Teste ob die Datei geschrieben werden konnte
|
||||
if [ -f "$myp_sysctl_file" ]; then
|
||||
success "✅ Basis-sysctl-Konfiguration erstellt"
|
||||
debug "sysctl-Konfiguration erstellt: $myp_sysctl_file"
|
||||
else
|
||||
warning "⚠️ sysctl-Konfigurationsdatei konnte nicht erstellt werden"
|
||||
return
|
||||
fi
|
||||
|
||||
# Optional: Erweiterte Einstellungen nur wenn Raspberry Pi
|
||||
if [ "${RASPBERRY_PI_DETECTED:-0}" = "1" ]; then
|
||||
progress "Füge Raspberry Pi spezifische Optimierungen hinzu..."
|
||||
|
||||
cat >> "$myp_sysctl_file" << 'EOF'
|
||||
|
||||
# ===================================================================
|
||||
# RASPBERRY PI PERFORMANCE-OPTIMIERUNGEN FÜR WEBAPP
|
||||
# RASPBERRY PI PERFORMANCE-OPTIMIERUNGEN (optional)
|
||||
# ===================================================================
|
||||
|
||||
# Memory Management für schwache Hardware optimieren
|
||||
# Memory Management für schwache Hardware
|
||||
vm.swappiness = 10
|
||||
vm.dirty_ratio = 15
|
||||
vm.dirty_background_ratio = 5
|
||||
vm.vfs_cache_pressure = 50
|
||||
vm.min_free_kbytes = 8192
|
||||
vm.overcommit_memory = 1
|
||||
|
||||
# CPU Scheduler für bessere Responsivität
|
||||
kernel.sched_min_granularity_ns = 10000000
|
||||
kernel.sched_wakeup_granularity_ns = 15000000
|
||||
kernel.sched_migration_cost_ns = 5000000
|
||||
|
||||
# Filesystem Performance
|
||||
vm.dirty_expire_centisecs = 500
|
||||
vm.dirty_writeback_centisecs = 100
|
||||
|
||||
# Memory Compaction für bessere Speichernutzung
|
||||
vm.compact_memory = 1
|
||||
|
||||
# OOM Killer weniger aggressiv
|
||||
vm.oom_kill_allocating_task = 0
|
||||
vm.panic_on_oom = 0
|
||||
|
||||
# Kernel Preemption für bessere Interaktivität
|
||||
kernel.sched_rt_runtime_us = 950000
|
||||
kernel.sched_rt_period_us = 1000000
|
||||
|
||||
# I/O Scheduler Optimierungen für SD-Karte
|
||||
# (wird später per udev-Regel angewendet)
|
||||
|
||||
EOF
|
||||
debug "Raspberry Pi Optimierungen zur sysctl-Konfiguration hinzugefügt"
|
||||
fi
|
||||
|
||||
# Sysctl-Einstellungen sofort anwenden
|
||||
sysctl -p || warning "Einige sysctl-Einstellungen konnten nicht angewendet werden"
|
||||
# Sysctl-Einstellungen vorsichtig anwenden
|
||||
progress "Wende sysctl-Einstellungen an..."
|
||||
|
||||
# IPv6 in Netzwerk-Interfaces deaktivieren
|
||||
progress "Deaktiviere IPv6 in Netzwerk-Interfaces..."
|
||||
# Versuche sysctl-Einstellungen einzeln anzuwenden (robuster)
|
||||
if sysctl -p >/dev/null 2>&1; then
|
||||
success "✅ Alle sysctl-Einstellungen erfolgreich angewendet"
|
||||
else
|
||||
warning "⚠️ Einige sysctl-Einstellungen konnten nicht angewendet werden"
|
||||
debug "sysctl -p Fehlerausgabe: $(sysctl -p 2>&1 || echo 'Befehl fehlgeschlagen')"
|
||||
|
||||
# Versuche kritische Einstellungen einzeln (IPv6 deaktivieren)
|
||||
progress "Wende kritische Einstellungen einzeln an..."
|
||||
|
||||
local critical_settings=(
|
||||
"net.ipv6.conf.all.disable_ipv6=1"
|
||||
"net.ipv6.conf.default.disable_ipv6=1"
|
||||
"net.ipv4.ip_forward=0"
|
||||
"net.ipv4.tcp_syncookies=1"
|
||||
)
|
||||
|
||||
local applied_count=0
|
||||
for setting in "${critical_settings[@]}"; do
|
||||
if sysctl -w "$setting" >/dev/null 2>&1; then
|
||||
((applied_count++))
|
||||
debug "Erfolgreich angewendet: $setting"
|
||||
else
|
||||
debug "Fehlgeschlagen: $setting"
|
||||
fi
|
||||
done
|
||||
|
||||
if [ $applied_count -gt 0 ]; then
|
||||
success "✅ $applied_count kritische sysctl-Einstellungen angewendet"
|
||||
else
|
||||
warning "⚠️ Keine sysctl-Einstellungen konnten angewendet werden"
|
||||
fi
|
||||
fi
|
||||
|
||||
# Für systemd-networkd
|
||||
if systemctl is-enabled systemd-networkd 2>/dev/null; then
|
||||
mkdir -p /etc/systemd/network
|
||||
cat > /etc/systemd/network/99-disable-ipv6.network << 'EOF'
|
||||
# IPv6 in Netzwerk-Interfaces deaktivieren (robust)
|
||||
progress "Deaktiviere IPv6 in Netzwerk-Interfaces (vorsichtig)..."
|
||||
|
||||
# Für systemd-networkd (nur wenn aktiv)
|
||||
if systemctl is-enabled systemd-networkd >/dev/null 2>&1 && systemctl is-active systemd-networkd >/dev/null 2>&1; then
|
||||
progress "Konfiguriere systemd-networkd für IPv6-Deaktivierung..."
|
||||
if mkdir -p /etc/systemd/network 2>/dev/null; then
|
||||
cat > /etc/systemd/network/99-disable-ipv6.network << 'EOF'
|
||||
[Match]
|
||||
Name=*
|
||||
|
||||
@ -1041,12 +1300,23 @@ Name=*
|
||||
IPv6AcceptRA=no
|
||||
LinkLocalAddressing=no
|
||||
EOF
|
||||
systemctl restart systemd-networkd 2>/dev/null || true
|
||||
if systemctl restart systemd-networkd >/dev/null 2>&1; then
|
||||
success "✅ systemd-networkd IPv6 deaktiviert"
|
||||
else
|
||||
warning "⚠️ systemd-networkd Neustart fehlgeschlagen"
|
||||
fi
|
||||
else
|
||||
warning "⚠️ systemd-networkd Verzeichnis konnte nicht erstellt werden"
|
||||
fi
|
||||
else
|
||||
debug "systemd-networkd nicht aktiv - überspringe"
|
||||
fi
|
||||
|
||||
# Für NetworkManager
|
||||
if systemctl is-enabled NetworkManager 2>/dev/null; then
|
||||
cat > /etc/NetworkManager/conf.d/99-disable-ipv6.conf << 'EOF'
|
||||
# Für NetworkManager (nur wenn aktiv)
|
||||
if systemctl is-enabled NetworkManager >/dev/null 2>&1 && systemctl is-active NetworkManager >/dev/null 2>&1; then
|
||||
progress "Konfiguriere NetworkManager für IPv6-Deaktivierung..."
|
||||
if mkdir -p /etc/NetworkManager/conf.d 2>/dev/null; then
|
||||
cat > /etc/NetworkManager/conf.d/99-disable-ipv6.conf << 'EOF'
|
||||
[main]
|
||||
plugins=keyfile
|
||||
|
||||
@ -1056,11 +1326,26 @@ unmanaged-devices=none
|
||||
[connection]
|
||||
ipv6.method=ignore
|
||||
EOF
|
||||
systemctl restart NetworkManager 2>/dev/null || true
|
||||
if systemctl restart NetworkManager >/dev/null 2>&1; then
|
||||
success "✅ NetworkManager IPv6 deaktiviert"
|
||||
else
|
||||
warning "⚠️ NetworkManager Neustart fehlgeschlagen"
|
||||
fi
|
||||
else
|
||||
warning "⚠️ NetworkManager Verzeichnis konnte nicht erstellt werden"
|
||||
fi
|
||||
else
|
||||
debug "NetworkManager nicht aktiv - überspringe"
|
||||
fi
|
||||
|
||||
# IPv6 in /etc/hosts auskommentieren
|
||||
sed -i 's/^::1/#::1/' /etc/hosts 2>/dev/null || true
|
||||
# IPv6 in /etc/hosts auskommentieren (vorsichtig)
|
||||
if [ -f /etc/hosts ]; then
|
||||
if sed -i.backup 's/^::1/#::1/' /etc/hosts 2>/dev/null; then
|
||||
debug "IPv6 Einträge in /etc/hosts auskommentiert"
|
||||
else
|
||||
debug "IPv6 Einträge in /etc/hosts konnten nicht geändert werden"
|
||||
fi
|
||||
fi
|
||||
|
||||
log "✅ Erweiterte Netzwerk-Sicherheit konfiguriert:"
|
||||
log " 🚫 IPv6 vollständig deaktiviert"
|
||||
|
Reference in New Issue
Block a user