GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Über 15 Beispiele für Linux-cURL-Befehle

In diesem Tutorial behandeln wir den cURL-Befehl in Linux. Folgen Sie uns, während wir Sie mit Beispielen durch die Funktionen dieses leistungsstarken Dienstprogramms führen, damit Sie verstehen, wozu es in der Lage ist.

Sie können den cURL-Befehl verwenden, um Daten auf einen Server herunter- oder hochzuladen, indem Sie eines der über 20 unterstützten Protokolle verwenden. Bei diesen Daten kann es sich um eine Datei, eine E-Mail-Nachricht oder eine Webseite handeln.

Was ist der cURL-Befehl?

cURL ist ein ideales Werkzeug für die Interaktion mit einer Website oder API, das Senden von Anfragen und das Anzeigen der Antworten auf dem Terminal oder das Protokollieren der Daten in einer Datei. Manchmal können Sie es als Teil eines größeren Skripts verwenden und die Daten zur weiteren Verarbeitung an andere Funktionen übergeben.

Da die Hauptverwendung von cURL darin besteht, Dateien von Servern abzurufen/herunterzuladen. Es führt diese Funktion gut aus, aber manchmal ist der wget-Befehl besser für diese Aufgabe.

Wir gehen später in diesem Artikel auf einige der Unterschiede und Ähnlichkeiten zwischen wget und cURL ein.

In den folgenden Abschnitten zeigen wir Ihnen, wie Sie cURL verwenden.

Datei herunterladen

Der grundlegendste Befehl, den wir cURL geben können, ist das Herunterladen einer Website oder Datei. cURL verwendet HTTP als Standardprotokoll, sofern wir kein anderes angeben. Um eine Website herunterzuladen, geben Sie einfach diesen Befehl ein:

$ curl http://www.google.com

Geben Sie natürlich eine beliebige Website oder Seite ein, die Sie abrufen möchten.

Die Ausführung eines einfachen Befehls wie diesem ohne zusätzliche Optionen wird selten nützlich sein, da dies cURL nur anweist, den Quellcode der von Ihnen bereitgestellten Seite abzurufen.

Als wir unseren Befehl ausgeführt haben, ist unser Terminal mit HTML und anderem Web-Scripting-Code gefüllt – etwas, das für uns in dieser Form nicht besonders nützlich ist.

Laden wir die Website stattdessen als HTML-Dokument herunter, damit der Inhalt angezeigt werden kann. Fügen Sie die Option –output zu cURL hinzu, um dies zu erreichen.

$ curl www.likegeeks.com --output likegeeks.html

Jetzt können wir die heruntergeladene Website öffnen und in einem Webbrowser anzeigen.

Wenn Sie eine Online-Datei herunterladen möchten, ist der Befehl ungefähr gleich. Stellen Sie jedoch sicher, dass Sie die Option –output an cURL anhängen, wie wir es im obigen Beispiel getan haben.

Wenn Sie dies nicht tun, sendet cURL die binäre Ausgabe der Online-Datei an Ihr Terminal, was wahrscheinlich zu einer Fehlfunktion führen wird.

So sieht es aus, wenn wir den Download eines 500-KB-Word-Dokuments starten.

Das Word-Dokument beginnt mit dem Herunterladen und zeigt den Download-Fortschritt im Terminal an. Wenn der Download abgeschlossen ist, ist die Datei in dem Verzeichnis verfügbar, in dem wir sie gespeichert haben.

In diesem Beispiel haben wir kein Verzeichnis angegeben, also wurde die Datei in unserem aktuellen Arbeitsverzeichnis gespeichert (das Verzeichnis, von dem aus wir den cURL-Befehl ausgeführt haben).

Haben Sie auch die Option -L bemerkt, die wir in unserem cURL-Befehl angegeben haben? Es war notwendig, um diese Datei herunterzuladen, und wir gehen im nächsten Abschnitt auf ihre Funktion ein.

Weiterleitung folgen

Wenn Sie beim Versuch, eine Website zu cURLen, eine leere Ausgabe erhalten, bedeutet dies wahrscheinlich, dass die Website cURL angewiesen hat, auf eine andere URL umzuleiten. Standardmäßig folgt cURL der Umleitung nicht, aber Sie können es mit dem Schalter -L anweisen.

$ curl -L www.likegeeks.com

Bei unseren Recherchen für diesen Artikel haben wir festgestellt, dass es notwendig ist, das -L auf den meisten Websites anzugeben, also denken Sie unbedingt an diesen kleinen Trick. Vielleicht möchten Sie es sogar standardmäßig an die meisten Ihrer cURL-Befehle anhängen.

Download stoppen und fortsetzen

Wenn Ihr Download unterbrochen wird oder wenn Sie eine große Datei herunterladen müssen, aber nicht alles in einer Sitzung erledigen möchten, bietet cURL eine Option zum Anhalten und Fortsetzen der Übertragung.

Um eine Übertragung manuell zu stoppen, können Sie den cURL-Prozess einfach auf die gleiche Weise beenden, wie Sie fast jeden Prozess stoppen würden, der derzeit in Ihrem Terminal ausgeführt wird, mit einer Kombination aus Strg + C.

Unser Download hat begonnen, wurde aber mit Strg+C unterbrochen, jetzt setzen wir ihn mit der folgenden Syntax fort:

$ curl -C - example.com/some-file.zip --output MyFile.zip

Der Schalter -C setzt unsere Dateiübertragung fort, aber beachten Sie auch, dass direkt danach ein Bindestrich (-) steht. Dies weist cURL an, die Dateiübertragung fortzusetzen, sich jedoch zuerst den bereits heruntergeladenen Teil anzusehen, um das letzte heruntergeladene Byte zu sehen und zu bestimmen, wo fortgesetzt werden soll.

Unsere Dateiübertragung wurde fortgesetzt und der Download erfolgreich abgeschlossen.

Zeitüberschreitung angeben

Wenn Sie möchten, dass cURL nach einer bestimmten Zeit aufhört, was es tut, können Sie im Befehl ein Timeout angeben. Dies ist besonders nützlich, da einige Vorgänge in cURL standardmäßig kein Timeout haben, also muss eines angegeben werden, wenn Sie nicht möchten, dass es auf unbestimmte Zeit aufgehängt wird.

Mit dem Schalter -m können Sie eine maximale Zeit für die Ausführung eines Befehls angeben. Wenn die angegebene Zeit verstrichen ist, beendet cURL alles, was es tut, auch wenn es gerade dabei ist, eine Datei herunter- oder hochzuladen.

cURL erwartet, dass Ihre maximale Zeit in Sekunden angegeben wird. Für eine Zeitüberschreitung nach einer Minute würde der Befehl also so aussehen:

$ curl -m 60 example.com

Eine andere Art von Timeout, die Sie mit cURL angeben können, ist die Zeit, die für die Verbindung aufgewendet werden soll. Dadurch wird sichergestellt, dass cURL nicht unangemessen viel Zeit damit verbringt, einen Host zu kontaktieren, der offline oder anderweitig nicht erreichbar ist.

Es akzeptiert Sekunden als Argument:

$ curl --connect-timeout 60 example.com

Einen Benutzernamen und ein Passwort verwenden

Sie können einen Benutzernamen und ein Passwort in einem cURL-Befehl mit dem Schalter -u angeben. Wenn Sie sich beispielsweise bei einem FTP-Server authentifizieren möchten, würde die Syntax folgendermaßen aussehen:

$ curl -u username:password ftp://example.com

Sie können dies mit jedem Protokoll verwenden, aber FTP wird häufig für einfache Dateiübertragungen wie diese verwendet.

Wenn wir die im obigen Screenshot angezeigte Datei herunterladen möchten, geben wir einfach denselben Befehl aus, verwenden jedoch den vollständigen Pfad zur Datei.

$ curl -u username:password ftp://example.com/readme.txt

Verwenden Sie Proxys

Es ist einfach, cURL anzuweisen, einen Proxy zu verwenden, bevor eine Verbindung zu einem Host hergestellt wird. cURL erwartet standardmäßig einen HTTP-Proxy, sofern Sie nichts anderes angeben.

Verwenden Sie den Schalter -x, um einen Proxy zu definieren. Da in diesem Beispiel kein Protokoll angegeben ist, geht cURL davon aus, dass es sich um einen HTTP-Proxy handelt.

$ curl -x 192.168.1.1:8080 http://example.com

Dieser Befehl würde 192.168.1.1 auf Port 8080 als Proxy verwenden, um eine Verbindung zu example.com herzustellen.

Sie können es auch mit anderen Protokollen verwenden. Hier ist ein Beispiel dafür, wie es aussehen würde, einen HTTP-Proxy zu verwenden, um per cURL zu einem FTP-Server zu gelangen und eine Datei abzurufen.

$ curl -x 192.168.1.1:8080 ftp://example.com/readme.txt

cURL unterstützt viele andere Arten von Proxys und Optionen, die mit diesen Proxys verwendet werden können, aber eine weitere Erweiterung würde den Rahmen dieses Handbuchs sprengen. Weitere Informationen zu Proxy-Tunneling, SOCKS-Proxys, Authentifizierung usw. finden Sie auf der cURL-Manpage.

Aufgeteilter Download großer Dateien

Wir haben bereits gezeigt, wie Sie Dateiübertragungen stoppen und fortsetzen können, aber was wäre, wenn wir wollten, dass cURL nur einen Teil einer Datei herunterlädt? Auf diese Weise könnten wir eine große Datei in mehreren Teilen herunterladen.

Es ist möglich, nur bestimmte Teile einer Datei herunterzuladen, falls Sie unter einer Download-Obergrenze oder ähnlichem bleiben müssen. Dazu können Sie das Flag –range verwenden.

Sie müssen die Größe in Byte schreiben. Wenn wir also die neueste Ubuntu .iso-Datei in 100-MB-Blöcken herunterladen wollten, würde unser erster Befehl so aussehen:

$ curl --range 0-99999999 http://releases.ubuntu.com/18.04/ubuntu-18.04.3-desktop-amd64.iso ubuntu-part1

Der zweite Befehl müsste beim nächsten Byte abholen und einen weiteren 100-MB-Block herunterladen.

$ curl --range 0-99999999 http://releases.ubuntu.com/18.04/ubuntu-18.04.3-desktop-amd64.iso ubuntu-part1
$ curl --range 100000000-199999999 http://releases.ubuntu.com/18.04/ubuntu-18.04.3-desktop-amd64.iso ubuntu-part2

Wiederholen Sie diesen Vorgang, bis cURL alle Chunks herunterlädt. Der letzte Schritt besteht darin, die Chunks zu einer einzigen Datei zusammenzufassen, was mit dem cat-Befehl erledigt werden kann.

$ cat ubuntu-part? > ubuntu-18.04.3-desktop-amd64.iso

Client-Zertifikat

Um auf einen Server mit Zertifikatauthentifizierung statt Standardauthentifizierung zuzugreifen, können Sie eine Zertifikatsdatei mit der Option –cert angeben.

$ curl --cert path/to/cert.crt:password ftp://example.com

cURL hat viele Optionen für das Format von Zertifikatsdateien.

Es gibt auch weitere zertifikatbezogene Optionen:–cacert, –cert-status, –cert-type usw. Eine vollständige Liste der Optionen finden Sie in der Manpage.

Silent-cURL

Wenn Sie die Fortschrittsanzeige und Fehlermeldungen von cURL unterdrücken möchten, bietet der Schalter -s diese Funktion. Die angeforderten Daten werden weiterhin ausgegeben. Wenn Sie also möchten, dass der Befehl zu 100 % geräuschlos erfolgt, müssen Sie die Ausgabe in eine Datei umleiten.

Kombinieren Sie diesen Befehl mit dem Flag -O, um die Datei in Ihrem aktuellen Arbeitsverzeichnis zu speichern. Dadurch wird sichergestellt, dass cURL mit der Ausgabe 0 zurückkehrt.

$ curl -s -O http://example.com

Alternativ können Sie die Option –output verwenden, um auszuwählen, wo die Datei gespeichert werden soll, und einen Namen angeben.

$ curl -s http://example.com --output index.html

Kopfzeilen abrufen

Den Header einer entfernten Adresse abzurufen ist mit cURL sehr einfach, Sie müssen nur die Option -I verwenden.

$ curl -I example.com

Wenn Sie dies mit der Option –L kombinieren, gibt cURL die Header jeder Adresse zurück, zu der es umgeleitet wird.

$ curl -I -L example.com

Mehrere Überschriften

Sie können Header mit der Option -H an cURL übergeben. Und um mehrere Header zu übergeben, müssen Sie nur die Option -H mehrmals verwenden. Hier ist ein Beispiel:

$ curl -H 'Connection: keep-alive' -H 'Accept-Charset: utf-8 ' http://example.com

Datei hochladen (hochladen)

POST ist eine gängige Methode für Websites, Daten zu akzeptieren. Wenn Sie beispielsweise ein Formular online ausfüllen, besteht eine gute Chance, dass die Daten von Ihrem Browser mit der POST-Methode gesendet werden. Um Daten auf diese Weise an eine Website zu senden, verwenden Sie die Option -d.

$ curl -d 'name=geek&location=usa' http://example.com

Um eine Datei anstelle von Text hochzuladen, würde die Syntax wie folgt aussehen:

$ curl -d @filename http://example.com

Verwenden Sie so viele -d-Flags wie nötig, um all die verschiedenen Daten oder Dateinamen anzugeben, die Sie hochladen möchten.

Sie können die Option -T verwenden, wenn Sie eine Datei auf einen FTP-Server hochladen möchten.

$ curl -T myfile.txt ftp://example.com/some/directory/

E-Mail senden

Beim Senden einer E-Mail werden einfach Daten von Ihrem Computer (oder einem anderen Gerät) auf einen E-Mail-Server hochgeladen. Da cURL Daten hochladen kann, können wir damit E-Mails versenden. Es gibt eine Menge Optionen, aber hier ist ein Beispiel dafür, wie man eine E-Mail über einen SMTP-Server sendet:

$ curl smtp://mail.example.com --mail-from [email protected] --mail-rcpt [email protected] --upload-file email.txt

Sie müssen Ihre E-Mail-Datei korrekt formatieren. Etwa so:

$ cat email.txt

From: Web Administrator <[email protected]>

To: John Doe <[email protected]>

Subject: An example email

Date: Sat, 7 Dec 2019 02:10:15




John,

Hope you have a great weekend.

-Admin

Genauere und spezialisiertere Optionen finden Sie wie üblich auf der Manpage von cURL.

E-Mail-Nachricht lesen

cURL unterstützt IMAP (und IMAPS) und POP3, Sie können beide verwenden, um E-Mail-Nachrichten von einem Mailserver abzurufen.

Melden Sie sich mit IMAP wie folgt an:

$ curl -u username:password imap://mail.example.com

Dieser Befehl listet verfügbare Postfächer auf, zeigt jedoch keine bestimmte Nachricht an. Geben Sie dazu die UID der Nachricht mit der Option –X an.

$ curl -u username:password imap://mail.example.com -X 'UID FETCH 1234'

Unterschied zwischen cURL und wget

Manchmal verwechseln Leute cURL und wget, weil sie beide in der Lage sind, Daten von einem Server abzurufen. Aber das ist das Einzige, was sie gemeinsam haben.

Wir haben in diesem Artikel gezeigt, was cURL kann. wget bietet einen anderen Satz von Funktionen. wget ist das beste Tool zum Herunterladen von Websites und kann Verzeichnisse und Links rekursiv durchlaufen, um ganze Websites herunterzuladen.

Verwenden Sie zum Herunterladen von Websites wget. Wenn Sie ein anderes Protokoll als HTTP oder HTTPS verwenden oder Dateien hochladen, verwenden Sie cURL. cURL ist auch eine gute Option, um einzelne Dateien aus dem Internet herunterzuladen, obwohl wget das auch gut macht.

Ich hoffe, Sie finden das Tutorial nützlich. Komm immer wieder.


Linux
  1. 12 IP-Befehlsbeispiele für Linux-Benutzer

  2. Beispiele für Linux-Curl-Befehle – Teil 2

  3. Linux-Killall-Befehl für Anfänger (8 Beispiele)

  4. Über 15 Beispiele für den Befehl yum update

  5. 7 Beispiele für Linux-df-Befehle

Linux w Command Tutorial für Anfänger (5 Beispiele)

Linux Curl Command Tutorial für Anfänger (5 Beispiele)

Linux ss Command Tutorial für Anfänger (8 Beispiele)

Linux-Suchbefehl für Anfänger (8 Beispiele)

16 praktische Beispiele für Linux LS-Befehle für Anfänger

Linux-mv-Befehl für Anfänger erklärt (8 Beispiele)