curl-Exit-Codes
Lektion 30 von 47 im Kurs Netzwerken mit dem Terminal von Coddy.
In einem einzigen curl-Befehl gibt es zwei völlig unterschiedliche Vorstellungen von einem Fehler, und wenn man sie verwechselt, führt das zu echten Fehlern.
Der Statuscode ist die Antwort des Servers: 200, 404, 500. Der Exit-Code gibt an, ob es curl überhaupt gelungen ist, die Kommunikation herzustellen.
Ein 404 ist eine erfolgreiche Kommunikation. Der Server wurde erreicht, hat die Anfrage verstanden und geantwortet. curl exits 0. Ein Skript, das nur den Exit-Code prüft, wird das als in Ordnung behandeln – eine klassische Ursache für Pipelines, die erfolgreich durchlaufen, während sie eine Fehlerseite herunterladen.
curl -s -o /dev/null http://127.0.0.1:9120/missing
echo $? # 0, weil die Anfrage selbst funktioniert hatWenn du bei einem fehlerhaften Status einen Fehler möchtest, fordere das mit --fail an; dadurch beendet sich curl bei 4xx- und 5xx-Statuscodes mit einem Wert ungleich null. Andernfalls prüfst du %{http_code} selbst.
Aufgabe
SchwerZeige, dass eine 404-Anfrage trotzdem erfolgreich ist.
- Stelle einen Ordner auf Port 9120 bereit
- Fordere eine Seite an, die nicht existiert, und gib
status=zusammen mit dem Statuscode aus - Gib in der nächsten Zeile
exit=zusammen mit dem Exit-Code von curl aus
Erwartete Ausgabe:
status=404
exit=0Lies
$?unmittelbar nach dem curl-Aufruf aus, der ihn erzeugt hat.
Probier es selbst
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Netzwerken mit dem Terminal
2Namen und DNS
Warum Namen existierenDie Hosts-DateiEinen Namen nachschlagenRecord-TypenRückblick: Namen6curl im Detail
Header anzeigenAntworten speichernBenutzerdefinierte HeaderStatus und Zeitmessungcurl-Exit-CodesRückblick: curl-Flags9Authentifizierung und Debugging
API-Schlüssel und BearerDer User-AgentTimeouts und WiederholungenEinen Fehler lesenRückblick: DebuggingÜbe selbstständig: Terminal-Playground