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
wgetfür Backup-Downloads und Spiegelungen. - Wahl: In modernen Distributionen (Arch/Alpine) ist
curloft Standard,wgetmuss 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 |