Linux-URL-Datenübertragung

LinuxLinuxBeginner
Jetzt üben

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

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.

Dies ist ein Guided Lab, das schrittweise Anweisungen bietet, um Ihnen beim Lernen und Üben zu helfen. Befolgen Sie die Anweisungen sorgfältig, um jeden Schritt abzuschließen und praktische Erfahrungen zu sammeln. Historische Daten zeigen, dass dies ein Labor der Stufe Anfänger mit einer Abschlussquote von 95% ist. Es hat eine positive Bewertungsrate von 100% von den Lernenden erhalten.

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.

Ausgabe in Dateien speichern

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:

  1. Nutzt den ausführlichen Modus (-v)
  2. Folgt Weiterleitungen (-L)
  3. Speichert die Ausgabe in data/redirect_example.txt
  4. 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:

  1. Grundlegende Verwendung von curl zum Abrufen von Webinhalten
  2. Speichern der curl-Ausgabe in Dateien mithilfe von Umleitung und der -o-Option
  3. Verwenden von erweiterten curl-Optionen wie ausführlichem Modus (-v), benutzerdefinierten Headern (-H) und Folgen von Umleitungen (-L)
  4. Arbeiten mit verschiedenen HTTP-Methoden (GET, POST, PUT, DELETE) und Senden von Daten
  5. 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.