linux-cli-shell cli networking http api curl wget

Curl & Wget: CLI HTTP Clients (Artikel 275)

Beherrschung von curl und wget auf der Kommandozeile. Erfahren Sie alles über API-Interaktion, Header-Manipulation und das automatisierte Herunterladen von Ressourcen.

# Curl & Wget: Die Allzweckwaffen für Web-Ressourcen

TL;DR / Management Summary Wer heute Server verwaltet, muss mit Web-Services (REST APIs, Download-Mirrors) sprechen können. Während wget der Spezialist für das Herunterladen ganzer Webseiten und Dateien ist (inkl. Rekursion), ist curl (Client URL) das Hochleistungstool für die Interaktion mit APIs. Ein Senior Admin nutzt curl, um HTTP-Header zu manipulieren, POST-Anfragen zu senden und Fehler in Webservices direkt auf der Konsole zu diagnostizieren.


# 1. Einführung & Architektur

Transfer vs. Retrieval.

  • curl: Unterstützt dutzende Protokolle (HTTP, FTP, SCP, MQTT). Fokus: Datentransfer und API-Interaktion.
  • wget: Fokus: Zuverlässiges Herunterladen. Kann abgebrochene Downloads fortsetzen und ganze Web-Trees spiegeln.

# Die Werkzeug-Wahl (Mermaid)

graph TD
    A[Requirement] --> B{Goal?}
    B -->|Just Download File| C[wget]
    B -->|Mirror Website| C
    B -->|Test REST API| D[curl]
    B -->|Send Custom Header| D
    B -->|Check HTTP Status| D
    C --> E[wget -c: Resume download]
    D --> F[curl -X POST: API Call]

# 2. curl: Der API-Experte

Präzision in jedem Request.

# Nur Header anzeigen (Troubleshooting)

curl -I https://google.com
# Zeigt Status-Code, Cache-Header und Server-Version.

# API-Abfrage mit Token und JSON

curl -X POST https://api.intern/v1/update \
     -H "Authorization: Bearer <TOKEN>" \
     -H "Content-Type: application/json" \
     -d '{"status": "ok"}'

# Redirects folgen

Standardmäßig bleibt curl beim Redirect stehen. Nutzen Sie -L:

curl -L http://google.com # Folgt zu https://

# 3. wget: Der Download-Spezialist

Zuverlässigkeit bei großen Daten.

# Ganze Webseite spiegeln

wget --mirror --convert-links --adjust-extension --page-requisites --no-parent http://docs.intern/

# Abgebrochene Downloads fortsetzen

wget -c https://mirror.intern/huge-iso.iso

# 4. Day-2 Operations: Automatisierung

Skripte mit Web-Anbindung.

# IP-Adresse ermitteln (via curl)

MY_IP=$(curl -s ifconfig.me)

# Datei-Download mit Fortschrittsanzeige

curl -o local_file.zip http://server/file.zip

# 5. Troubleshooting & “War Stories”

Wenn die Firewall blockiert.

# Story 1: “Der User-Agent Block”

Symptom: wget liefert einen HTTP 403 Forbidden, aber im Browser auf dem Admin-Laptop funktioniert der Link. Ursache: Der Webserver blockiert Anfragen von bekannten CLI-Tools (User-Agent Filter). Lösung: Tarnen Sie Ihr Tool als Browser: curl -A "Mozilla/5.0" http://blocker.intern.

# Story 2: “Das Zertifikats-Problem”

Symptom: Ein Skript schlägt fehl mit curl: (60) SSL certificate problem: self signed certificate. Ursache: Die interne API nutzt ein Zertifikat einer privaten CA, die dem Server nicht bekannt ist. Lösung: Nutzen Sie -k (--insecure) für schnelles Debugging, aber für die Produktion fügen Sie das CA-Zertifikat zum System-Truststore hinzu (siehe Artikel 126).


# 6. Fazit & Empfehlung

  • Entwickler: Lernen Sie curl – es ist die Grundlage für jedes API-Debugging.
  • Wartung: Nutzen Sie wget für Backup-Downloads und Spiegelungen.
  • Wahl: In modernen Distributionen (Arch/Alpine) ist curl oft Standard, wget muss meist nachinstalliert werden.

# Anhang: Cheatsheet

Aufgabe curl Befehl wget Befehl
Datei laden curl -O <url> wget <url>
Dateiname ändern curl -o <name> <url> wget -O <name> <url>
Nur Header curl -I <url> wget --server-response --spider <url>
POST Request curl -X POST -d "..." <url> wget --post-data="..." <url>
Insecure SSL curl -k <url> wget --no-check-certificate <url>
Auth (User:Pass) curl -u user:pass <url> wget --user=... --password=... <url>
Rate Limit curl --limit-rate 1M wget --limit-rate=1M
Silent Mode curl -s wget -q
Header hinzufügen curl -H "Key: Value" wget --header="Key: Value"
Hilfe curl --help wget --help