Website veroeffentlicht und die Diagnose des Skripts geschaerft

https://jamulix.de/OR/ steht auf dem Stand des heutigen Baus: 213 Dateien
uebertragen, 35 geloescht, alle vierzehn HTTP-Proben richtig - darunter die
entscheidende: /OR/anhang-glossar-literatur.html liefert jetzt 404 statt 200.
Der zweite Lauf unmittelbar danach uebertrug 0 Dateien und loeschte nichts.

Die Abbruchgrenze hat gleich beim ersten Einsatz gegriffen: 35 Loeschungen
ueber der Vorgabe von 30. Die Liste war vollstaendig erklaerbar - 33
verwaiste PNGs aus dem Aufraeumschritt, das leere bilder_04/__pycache__/ aus
dem spiegle_bilder()-Fehler und die geteilte Anhangseite. Dass ein
scp-Upload alle 35 stehen gelassen haette, ist damit belegt statt behauptet.

Zwei Huerden auf dem Weg, beide ins Skript uebersetzt:

ssh-copy-id braucht ein echtes Terminal. In der Claude-Code-Sitzung gibt es
keins, aber DISPLAY ist gesetzt - ssh sucht daraufhin ssh-askpass, das nicht
installiert ist. Der Schritt gehoert in ein normales Terminalfenster.

Danach sperrte fail2ban den Port: erste Verbindung erfolgreich, die folgenden
"Connection refused", waehrend die Website weiter mit 200 antwortete. Nach
sieben Minuten war die Sperre weg; weitere Versuche haetten sie verlaengert.

pruefe_ziel_erreichbar() unterscheidet jetzt die abgewiesene Verbindung von
der abgelehnten Anmeldung. Vorher meldete es in beiden Faellen "Der Schluessel
liegt noch nicht auf dem Server" - beim zweiten Mal glatt falsch, denn er lag
laengst dort.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
dschlueter 2026-09-08 16:52:00 +02:00
commit ef79e6fdc1
2 changed files with 66 additions and 9 deletions

View file

@ -2117,6 +2117,47 @@ rsync installiert" — tatsächlich schlug schon die Anmeldung fehl, weil der ö
Schlüssel noch nicht auf `jamulix.de` liegt. Die Prüfung unterscheidet die Fälle jetzt am
ssh-Rückgabewert 255 und nennt `ssh-copy-id`.
### ✅ Erstmals per Skript veröffentlicht — 08.09.2026
`https://jamulix.de/OR/` steht auf dem Stand des heutigen Baus. **213 Dateien übertragen, 35
gelöscht**, alle vierzehn HTTP-Proben richtig — darunter die entscheidende:
`/OR/anhang-glossar-literatur.html` liefert jetzt **404** statt 200. Der zweite Lauf
unmittelbar danach übertrug **0 Dateien** und löschte nichts.
**Die Abbruchgrenze hat gleich beim ersten Einsatz gegriffen** und sich damit bewährt: 35
Löschungen über der Vorgabe von 30. Die Liste war anzusehen, bevor sie angehoben wurde — und
sie war vollständig erklärbar:
| Anzahl | Was | Warum |
| --- | --- | --- |
| 33 | `bilder_04/*.png` | die verwaisten PNGs, die im Aufräumschritt lokal gelöscht wurden |
| 1 | `bilder_04/__pycache__/` | das leere Verzeichnis aus dem `spiegle_bilder()`-Fehler |
| 1 | `anhang-glossar-literatur.html` | die geteilte Anhangseite |
Dass ein `scp`-Upload alle 35 stehen gelassen hätte, ist damit belegt statt behauptet.
**Zwei Hürden auf dem Weg, beide in Konsequenzen übersetzt:**
*`ssh-copy-id` braucht ein echtes Terminal.* In der Claude-Code-Sitzung gibt es keins
(`tty` → „kein Terminal"), aber `DISPLAY=:1` ist gesetzt. `ssh` schließt daraus auf einen
grafischen Passwortdialog und sucht `/usr/bin/ssh-askpass`, das nicht installiert ist. Ein
Passwort über die normale Eingabe nimmt `ssh` grundsätzlich nicht entgegen. Der Schritt
gehört in ein normales Terminalfenster.
*Danach sperrte der Server den Port.* Die fehlgeschlagenen Passwortversuche plus die
Verbindungen des Skripts lösten eine Sperre aus (fail2ban): erste Verbindung erfolgreich,
die folgenden `Connection refused` — während die Website selbst weiter mit 200 antwortete.
Nach sieben Minuten Warten war sie weg. **Weitere Versuche hätten sie verlängert.**
Beides steckt jetzt im Skript: `pruefe_ziel_erreichbar()` unterscheidet die abgewiesene
Verbindung von der abgelehnten Anmeldung — vorher meldete es in beiden Fällen „Der
Schlüssel liegt noch nicht auf dem Server", was beim zweiten Mal glatt falsch war, denn er
lag längst dort.
Damit ist der seit dem Colab-Umbau offene Punkt erledigt: Online steht kein toter
Colab-Link mehr, `Notebooks_04/` liefert statt 403 eine Übersichtsseite, und das PDF
entspricht byte-genau dem gebauten.
---
## 8. Commit-Historie des V04-Strangs