Einführung
Willkommen im Linux URL-Datenübertragungs-Lab (Linux URL Data Transferring lab). In diesem Lab lernen Sie, wie Sie Daten mithilfe von URLs in Linux-Systemen übertragen. Dies ist eine grundlegende Fähigkeit für Systemadministratoren, Entwickler und IT-Sicherheitsexperten.
Das wichtigste Tool, das wir lernen werden, ist curl, ein leistungsstarkes Kommandozeilenprogramm zur Datenübertragung mit URL-Syntax. Sie werden lernen, wie Sie Daten von Websites abrufen, Inhalte in Dateien speichern, verschiedene HTTP-Methoden verwenden und Ihre Anfragen mit verschiedenen Optionen anpassen können.
Am Ende dieses Labs haben Sie praktische Erfahrungen mit wichtigen Datenübertragungstechniken, die in der realen Welt häufig eingesetzt werden.
Grundlagen von curl verstehen
curl ist ein Kommandozeilen-Tool zur Datenübertragung mit URL-Syntax. Es unterstützt zahlreiche Protokolle, darunter HTTP, HTTPS, FTP und viele andere. In diesem Schritt lernen Sie die grundlegende Verwendung von curl zum Abrufen von Webinhalten.
Beginnen wir damit, ein Terminal zu öffnen. Das Terminal sollte sich bereits im Verzeichnis /home/labex/project befinden. Wenn nicht, können Sie in dieses Verzeichnis wechseln, indem Sie Folgendes eingeben:
cd ~/project
Ihr erster curl-Befehl
Beginnen wir damit, curl zu verwenden, um Inhalte von einer Website abzurufen. Geben Sie den folgenden Befehl ein:
curl http://example.com
Nachdem Sie diesen Befehl ausgeführt haben, sollten Sie den HTML-Inhalt von example.com in Ihrem Terminal sehen. Diese Ausgabe enthält HTML-Tags und den gesamten Inhalt der Webseite. Die Ausgabe sollte in etwa so aussehen:
<!doctype html>
<html>
<head>
<title>Example Domain</title>
...
</head>
<body>
<div>
<h1>Example Domain</h1>
<p>This domain is for use in illustrative examples in documents...</p>
...
</div>
</body>
</html>
Dies zeigt die einfachste Verwendung von curl - das Abrufen des Inhalts einer URL und die direkte Anzeige in der Konsole.
Die Ausgabe verstehen
Die Ausgabe, die Sie sehen, ist die rohe HTML-Antwort vom Server. Wenn Sie eine Website mit einem Browser besuchen, interpretiert der Browser diesen HTML-Code und rendert ihn als formatierte Webseite. curl zeigt Ihnen jedoch einfach nur den rohen Inhalt.
Versuchen wir ein weiteres Beispiel, um unterschiedliche Inhalte zu sehen. Führen Sie Folgendes aus:
curl https://httpbin.org/json
Diesmal sollten Sie eine JSON-Antwort sehen. Die Ausgabe sollte in etwa so aussehen:
{
"slideshow": {
"author": "Yours Truly",
"date": "date of publication",
"slides": [
{
"title": "Wake up to WonderWidgets!",
"type": "all"
},
{
"items": [
"Why <em>WonderWidgets</em> are great",
"Who <em>buys</em> WonderWidgets"
],
"title": "Overview",
"type": "all"
}
],
"title": "Sample Slide Show"
}
}
Wie Sie sehen können, kann curl je nach Angebot des Servers verschiedene Arten von Inhalten abrufen.
Speichern der Ausgabe in Dateien
In vielen Fällen möchten Sie möglicherweise den abgerufenen Inhalt speichern, anstatt ihn nur im Terminal anzuzeigen. In diesem Schritt lernen Sie, wie Sie die Ausgabe von curl in Dateien speichern können.
Speichern mit Ausgabeumleitung
Der einfachste Weg, die Ausgabe eines curl-Befehls zu speichern, ist die Verwendung der Umleitung mit dem >-Operator. Führen Sie den folgenden Befehl aus:
curl http://example.com > example.html
Dieser Befehl ruft den Inhalt von example.com ab und speichert ihn in einer Datei namens example.html im aktuellen Verzeichnis. Um zu überprüfen, ob die Datei erstellt wurde, führen Sie aus:
ls -l example.html
Sie sollten die Datei mit ihrer Größe und anderen Details aufgelistet sehen.
Um den Inhalt der Datei zu überprüfen, können Sie den cat-Befehl verwenden:
cat example.html
Sie sollten den gleichen HTML-Inhalt sehen, der zuvor im Terminal angezeigt wurde.
Verwenden der -o-Option von curl
curl bietet eine spezielle Option -o (oder --output), um den abgerufenen Inhalt in einer Datei zu speichern. Dies ist besonders nützlich, wenn die Ausgabeumleitung Probleme verursachen könnte. Versuchen wir es:
curl -o httpbin_data.json https://httpbin.org/json
Dieser Befehl speichert die JSON-Daten von httpbin.org in einer Datei namens httpbin_data.json. Überprüfen Sie die Erstellung der Datei mit:
ls -l httpbin_data.json
Und überprüfen Sie ihren Inhalt mit:
cat httpbin_data.json
Erstellen eines Datenverzeichnisses
Es ist eine gute Praxis, Ihre Dateien zu organisieren. Erstellen wir ein spezielles Datenverzeichnis (falls es noch nicht existiert) und speichern wir dort etwas Inhalt:
mkdir -p data
curl -o data/google_data.txt http://www.google.com
Der mkdir -p-Befehl erstellt das data-Verzeichnis, wenn es noch nicht existiert. Die -p-Option stellt sicher, dass keine Fehlermeldung ausgegeben wird, wenn das Verzeichnis bereits existiert.
Jetzt überprüfen Sie, ob die Datei im Datenverzeichnis erstellt wurde:
ls -l data/google_data.txt
Sie sollten die Datei mit ihren Details aufgelistet sehen.
Erweiterte curl-Optionen
curl bietet viele Optionen, mit denen Sie Ihre Anfragen anpassen können. In diesem Schritt lernen Sie einige der nützlichsten Optionen kennen.
Ausführlicher Modus
Die Option -v (oder --verbose) veranlasst curl, detaillierte Informationen über die Anfrage und die Antwort anzuzeigen. Dies ist besonders nützlich für das Debugging. Führen Sie aus:
curl -v http://example.com
Sie sollten eine Menge Informationen sehen, darunter:
- Die von curl gesendeten Anfrage-Header
- Verbindungsdetails
- Antwort-Header vom Server
- Der eigentliche Inhalt der Antwort
Die Ausgabe wird in etwa so aussehen (einige Details können variieren):
* Trying 93.184.216.34:80...
* Connected to example.com (93.184.216.34) port 80 (#0)
> GET / HTTP/1.1
> Host: example.com
> User-Agent: curl/7.81.0
> Accept: */*
>
* Mark bundle as not supporting multiuse
< HTTP/1.1 200 OK
< Age: 578793
< Cache-Control: max-age=604800
< Content-Type: text/html; charset=UTF-8
< Date: Tue, 26 Dec 2023 13:45:32 GMT
< Etag: "3147526947+ident"
< Expires: Tue, 02 Jan 2024 13:45:32 GMT
< Last-Modified: Thu, 17 Oct 2019 07:18:26 GMT
< Server: ECS (dcb/7F83)
< Vary: Accept-Encoding
< X-Cache: HIT
< Content-Length: 1256
<
<!doctype html>
<html>
<head>
<title>Example Domain</title>
...
Zeilen, die mit * beginnen, sind Informationsmeldungen von curl selbst.
Zeilen, die mit > beginnen, sind Anfrage-Header.
Zeilen, die mit < beginnen, sind Antwort-Header.
Der eigentliche Inhalt folgt auf die Antwort-Header.
Benutzerdefinierte Header
Manchmal müssen Sie bestimmte Header mit Ihrer Anfrage senden. Hierfür können Sie die Option -H (oder --header) verwenden. Versuchen wir, einen benutzerdefinierten User-Agent festzulegen:
curl -H "User-Agent: MyCustomClient/1.0" https://httpbin.org/user-agent
Dieser Befehl sendet eine Anfrage an httpbin.org mit einem benutzerdefinierten User-Agent-Header. Die Antwort sollte bestätigen, dass Ihr benutzerdefinierter User-Agent empfangen wurde:
{
"user-agent": "MyCustomClient/1.0"
}
Weiterleitung folgen
Standardmäßig folgt curl nicht HTTP-Weiterleitungen. Sie können die Option -L (oder --location) verwenden, um es dazu zu bringen, Weiterleitungen zu folgen. Versuchen wir es:
curl -L http://github.com
Ohne die -L-Option würden Sie nur eine Weiterleitungsantwort erhalten. Mit -L folgt curl der Weiterleitung und zeigt Ihnen den Inhalt des Endziels.
Erstellen wir eine Datei im Datenverzeichnis, um mit diesen Optionen zu üben:
curl -v -L -o data/redirect_example.txt http://github.com
Dieser Befehl:
- Nutzt den ausführlichen Modus (
-v) - Folgt Weiterleitungen (
-L) - Speichert die Ausgabe in
data/redirect_example.txt - Fordert den Inhalt von github.com an
Überprüfen Sie, ob die Datei erstellt wurde:
ls -l data/redirect_example.txt
Sie sollten die Datei mit ihren Details aufgelistet sehen.
HTTP-Methoden und Datensenden
curl unterstützt verschiedene HTTP-Methoden über die Standard-GET-Methode hinaus. In diesem Schritt lernen Sie, wie Sie verschiedene HTTP-Methoden verwenden und Daten mit Ihren Anfragen senden können.
Verwenden der POST-Methode
Die POST-Methode wird üblicherweise verwendet, um Daten an einen Server zu senden. Sie können die -X-Option verwenden, um die HTTP-Methode anzugeben, und die -d-Option, um die Daten bereitzustellen. Versuchen wir es:
curl -X POST -d "name=John&age=25" https://httpbin.org/post
Dieser Befehl sendet eine POST-Anfrage mit Formulardaten an httpbin.org. Die Antwort sollte die von Ihnen gesendeten Daten zurückgeben:
{
"args": {},
"data": "",
"files": {},
"form": {
"age": "25",
"name": "John"
},
"headers": {
"Accept": "*/*",
"Content-Length": "16",
"Content-Type": "application/x-www-form-urlencoded",
"Host": "httpbin.org",
"User-Agent": "curl/7.81.0",
"X-Amzn-Trace-Id": "Root=1-65b..."
},
"json": null,
"origin": "your-ip-address",
"url": "https://httpbin.org/post"
}
Senden von JSON-Daten
Um JSON-Daten zu senden, müssen Sie den Content-Type-Header angeben. Führen Sie aus:
curl -X POST -H "Content-Type: application/json" -d '{"name":"John","age":25}' https://httpbin.org/post
Die Antwort sollte Ihre JSON-Daten enthalten:
{
"args": {},
"data": "{\"name\":\"John\",\"age\":25}",
"files": {},
"form": {},
"headers": {
"Accept": "*/*",
"Content-Length": "24",
"Content-Type": "application/json",
"Host": "httpbin.org",
"User-Agent": "curl/7.81.0",
"X-Amzn-Trace-Id": "Root=1-65b..."
},
"json": {
"age": 25,
"name": "John"
},
"origin": "your-ip-address",
"url": "https://httpbin.org/post"
}
Verwenden anderer HTTP-Methoden
curl unterstützt alle Standard-HTTP-Methoden. Versuchen wir eine PUT-Anfrage:
curl -X PUT -d "data=example" https://httpbin.org/put
Sie können auch eine DELETE-Anfrage versuchen:
curl -X DELETE https://httpbin.org/delete
Jeder dieser Befehle gibt eine Antwort zurück, die die Details Ihrer Anfrage zeigt.
Speichern wir die Ausgabe einer POST-Anfrage in einer Datei:
curl -X POST -d "name=John&age=25" -o data/post_response.json https://httpbin.org/post
Überprüfen Sie, ob die Datei erstellt wurde:
ls -l data/post_response.json
Und überprüfen Sie ihren Inhalt:
cat data/post_response.json
Sie sollten die JSON-Antwort von httpbin.org sehen, ähnlich wie zuvor gezeigt.
Dateien herunterladen und Fortschritt überwachen
curl eignet sich hervorragend zum Herunterladen von Dateien aus dem Internet. In diesem Schritt lernen Sie, wie Sie Dateien herunterladen und den Downloadfortschritt überwachen können.
Grundlegendes Dateiherunterladen
Um eine Datei herunterzuladen, können Sie die -o-Option verwenden, die wir bereits kennen. Laden wir ein Beispielbild herunter:
curl -o data/sample.jpg https://httpbin.org/image/jpeg
Dieser Befehl lädt ein JPEG-Bild von httpbin.org herunter und speichert es als sample.jpg im Datenverzeichnis.
Überprüfen Sie, ob die Datei heruntergeladen wurde:
ls -l data/sample.jpg
Herunterladen mit Fortschrittsbalken
Bei größeren Downloads ist es hilfreich, den Fortschritt zu sehen. Sie können die -#-Option verwenden, um einen Fortschrittsbalken anzuzeigen:
curl -## -o data/sample_with_progress.jpg https://httpbin.org/image/jpeg
Sie sollten einen Fortschrittsbalken wie diesen sehen:
######################################################################### 100.0%
Verwenden der Ausgabedatei-Option mit automatischem Namen
Wenn Sie den gleichen Dateinamen wie die Remote-Datei verwenden möchten, können Sie die -O-Option (großes O) verwenden:
cd data
curl -O https://httpbin.org/image/jpeg
cd ..
Dies lädt die Datei herunter und speichert sie als jpeg (der letzte Teil der URL) im Datenverzeichnis.
Überprüfen Sie, ob die Datei heruntergeladen wurde:
ls -l data/jpeg
Unterbrochene Downloads fortsetzen
Wenn ein Download unterbrochen wird, können Sie ihn mit der -C --Option fortsetzen:
curl -C - -o data/resume_example.jpg https://httpbin.org/image/jpeg
Dies teilt curl mit, automatisch zu bestimmen, wo der Download fortgesetzt werden soll.
Begrenzen der Downloadgeschwindigkeit
Sie können die Downloadgeschwindigkeit mit der --limit-rate-Option begrenzen:
curl --limit-rate 100K -o data/rate_limited.jpg https://httpbin.org/image/jpeg
Dies begrenzt die Downloadgeschwindigkeit auf 100 KB/s.
Mehrere Dateien herunterladen
Sie können mehrere Dateien mit einem einzigen Befehl herunterladen:
curl -o data/image1.jpg https://httpbin.org/image/jpeg -o data/image2.png https://httpbin.org/image/png
Dies lädt ein JPEG- und ein PNG-Bild herunter und speichert sie jeweils als image1.jpg und image2.png.
Überprüfen Sie, ob beide Dateien heruntergeladen wurden:
ls -l data/image1.jpg data/image2.png
Zusammenfassung
In diesem Lab haben Sie gelernt, wie Sie curl verwenden können, ein leistungsstarkes Befehlszeilentool zum Übertragen von Daten über URLs. Sie haben nun praktische Erfahrung in folgenden Bereichen:
- Grundlegende Verwendung von curl zum Abrufen von Webinhalten
- Speichern der curl-Ausgabe in Dateien mithilfe von Umleitung und der
-o-Option - Verwenden von erweiterten curl-Optionen wie ausführlichem Modus (
-v), benutzerdefinierten Headern (-H) und Folgen von Umleitungen (-L) - Arbeiten mit verschiedenen HTTP-Methoden (GET, POST, PUT, DELETE) und Senden von Daten
- Herunterladen von Dateien und Überwachen des Downloadfortschritts
Diese Fähigkeiten sind für viele Aufgaben in der Systemadministration, Webentwicklung, API-Testing und Automatisierungsskripts unerlässlich. Der curl-Befehl wird in verschiedenen technischen Bereichen weit verbreitet eingesetzt und ist auf praktisch allen Linux-Distributionen, macOS und sogar Windows verfügbar.
Wenn Sie Ihre Reise in der Linux-Welt und im Netzwerk weiter fortsetzen, denken Sie daran, dass curl viele mehr Optionen und Funktionen hat, als wir in diesem Lab behandelt haben. Sie können sich jederzeit in der curl-Manualseite (man curl) nach weiteren Informationen umsehen.



