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

Am weitesten verbreitete und beliebteste cURL-Befehle in der Praxis

cURL, kurz für „Client for URLs“, ist ein Kommandozeilentool zum Übertragen von Daten über verschiedene Protokolle. Dieser Artikel zielt darauf ab, die Befehle bereitzustellen, die häufig verwendet werden, und als praktische Referenz.

Inhaltsverzeichnis

  • Eine einzelne Datei herunterladen
  • Speichern Sie die cURL-Ausgabe in einer Datei
  • Fortschrittsbalken ausblenden
  • Mehrere Dateien gleichzeitig abrufen
  • Verfolgen Sie HTTP-Location-Header mit der Option -L
  • Vorherigen Download fortsetzen/fortsetzen
  • Verwenden Sie einen Proxy mit oder ohne Authentifizierung
  • HTTP-Header abfragen
  • Dateien auf den FTP-Server hochladen
  • Dateien vom FTP-Server herunterladen
  • Auflisten/Herunterladen mit Bereichen
  • Weitere Informationen zur Verwendung der Verbose- und Trace-Option
  • E-Mail mit dem SMTP-Protokoll senden
  • HTTP/2-Unterstützungsprüfung
  • HTTP-Methoden simulieren
  • Stellen Sie eine POST-Anfrage mit Parametern
  • Schlussfolgerung

Sie können curl aufrufen Befehl von Ihrem Terminal aus, ohne über Möglichkeiten zur Installation nachzudenken, da es auf den meisten Linux-basierten Betriebssystemen vorinstalliert ist.

Es gibt eine Vielzahl von Anwendungsfällen für Curl, wie zum Beispiel:

  • FTP-Upload
  • Proxy-Unterstützung
  • SSL-Verbindungen
  • HTTP-Post

cURL unterstützt auch die Verwendung aller folgenden Protokolle:DICT, FILE, FTP, FTPS, GOPHER, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, POP3, POP3S, RTMP, RTSP, SCP, SFTP, SMB, SMBS, SMTP , SMTPS, TELNET und TFTP.

Eine einzelne Datei herunterladen

Der folgende Befehl ruft den Inhalt der URL ab und zeigt ihn in STDOUT (d. h. auf Ihrem Terminal) an.

curl https://www.gnu.org

Um die Ausgabe in einer Datei zu speichern, leiten Sie sie wie unten gezeigt um. Dadurch werden auch einige zusätzliche Download-Statistiken angezeigt.

curl https://www.gnu.org > gnu-org.html

Speichern Sie die cURL-Ausgabe in einer Datei

Wir können das Ergebnis des cURL-Befehls mit -o in einer Datei speichern /-O Optionen.

  • -o (Kleinbuchstabe o) Das Ergebnis wird unter dem Dateinamen gespeichert, der in der Befehlszeile angegeben wurde
  • -O (großes O) Der Dateiname in der URL wird genommen und als Dateiname zum Speichern des Ergebnisses verwendet
curl -o my-gettext.html https://www.gnu.org/software/gettext/manual/gettext.html 

Als Ergebnis nun die Seite gettext.html wird in der Datei namens my-gettext.html gespeichert . Sie können dies auch feststellen, wenn Sie cURL mit -o ausführen wird die Fortschrittsanzeige für den Download wie folgt angezeigt.

Wenn Sie cURL -O verwenden , wird der Inhalt in der Datei mit dem Namen „gettext.html“ selbst auf dem lokalen Computer gespeichert.

curl -O http://www.gnu.org/software/gettext/manual/gettext.html

Hinweis:Beim curl die Daten auf das Terminal schreiben muss, deaktiviert es den Progress Meter, um Verwechslungen beim Drucken zu vermeiden. Wir können > verwenden , -o , -O Optionen, um das Ergebnis in eine Datei zu verschieben.

Fortschrittsbalken ausblenden

cURL zeigt standardmäßig einen Fortschrittsbalken an. Um es auszublenden -s (--silent )-Option verwendet werden.

curl -s -O http://www.gnu.org/software/gettext/manual/gettext.html

Wenn das aus irgendeinem Grund auf Ihrer Plattform nicht funktioniert, können Sie stderr jederzeit nach /dev/null umleiten :

curl -O http://www.gnu.org/software/gettext/manual/gettext.html 2>/dev/null

Mehrere Dateien gleichzeitig abrufen

Natürlich können wir mehrere Dateien auf einmal herunterladen, indem wir die URLs in der Befehlszeile angeben.

curl -O https://www.gnu.org/software/gettext/manual/html_node/index.html -O https://www.gnu.org/software/gettext/manual/gettext.html 

HTTP-Location-Headern mit Option -L folgen

Standardmäßig folgt cURL jedoch nicht den HTTP-Location-Headern. Es wird auch als Weiterleitung bezeichnet. Wenn eine angeforderte Webseite an einen anderen Ort verschoben wird, wird als Antwort ein HTTP-Location-Header gesendet, der enthält, wo sich die eigentliche Webseite befindet.

Mit -L können wir darauf bestehen, dass cURL der Weiterleitung folgt Option, wie unten gezeigt.

curl -L https://www.google.com

Vorherigen Download fortsetzen/fortsetzen

Mit cURL -C Option können Sie einen Download fortsetzen, der bereits aus irgendeinem Grund gestoppt wurde. Dies ist hilfreich, wenn Sie große Dateien herunterladen und der Download unterbrochen wurde.

Sagen wir -C - , dann findet cURL heraus, wo der Download fortgesetzt werden kann. Wir können auch einen Offset -C <offset> angeben . Die angegebenen Offset-Bytes werden für die Quelldatei von Anfang an übersprungen.

Starten Sie einen großen Download mit curl , und drücken Sie Ctrl-C um es zwischen dem Download zu stoppen.

curl -O https://www.gnu.org/software/gettext/manual/gettext.html

Mit curl -C - , können wir den Download dort fortsetzen, wo er zuvor unterbrochen wurde.

curl -C - -O https://www.gnu.org/software/gettext/manual/gettext.html

Verwenden Sie einen Proxy mit oder ohne Authentifizierung

Wenn Sie sich hinter einem Proxy-Server befinden, der Port 8080 unter proxy.yourdomain.com abhört, tun Sie Folgendes:

curl -x proxy.yourdomain.com:8080 -U user:password -O https://www.gnu.org/software/gettext/manual/gettext.html 

wo Sie -U user:password überspringen können wenn Ihr Proxy keine Authentifizierung erfordert.

HTTP-Header abfragen

HTTP-Header ermöglichen es dem Remote-Webserver, zusammen mit der eigentlichen Anfrage zusätzliche Informationen über sich selbst zu senden. Außerdem erhält der Kunde dadurch Einzelheiten darüber, wie die Anfrage bearbeitet wird.

So fragen Sie die HTTP-Header von einer Website ab:

curl -I https://www.gnu.org
HTTP/1.1 200 OK
Date: Mon, 13 Jul 2020 21:22:32 GMT
Server: Apache/2.4.7
Content-Location: home.html
Vary: negotiate,accept-language,Accept-Encoding
TCN: choice
Strict-Transport-Security: max-age=63072000
Access-Control-Allow-Origin: (null)
Accept-Ranges: bytes
Cache-Control: max-age=0
Expires: Mon, 13 Jul 2020 21:22:32 GMT
Content-Type: text/html
Content-Language: en

Laden Sie Dateien auf den FTP-Server hoch

cURL kann auch verwendet werden, um Dateien mit -T auf den FTP-Server hochzuladen Option.

curl -u ftpuser:ftppass -T myfile.txt ftp://ftp.server.com

Als Ergebnis lädt der obige Befehl die Datei mit dem Namen myfile.txt hoch zum FTP-Server. Sie können auch mehrere Dateien gleichzeitig hochladen, indem Sie die Bereichsoperationen verwenden.

curl -u ftpuser:ftppass -T "{file1,file2}" ftp://ftp.server.com

Optional können wir . verwenden um die Eingabe von STDIN zu erhalten und auf die Fernbedienung zu übertragen.

curl -u ftpuser:ftppass -T - ftp://ftp.server.com/mynewfile.txt

Der obige Befehl holt die Eingabe des Benutzers aus der Standardeingabe und speichert den Inhalt auf dem FTP-Server unter dem Namen mynewfile.txt .

Sie können ein -T angeben für jede URL und das Paar gibt an, was wo hochgeladen werden soll.

Dateien vom FTP-Server herunterladen

cURL kann auch verwendet werden, um Dateien von FTP-Servern herunterzuladen. Wenn der angegebene FTP-Pfad ein Verzeichnis ist, werden standardmäßig die Dateien unter dem spezifischen Verzeichnis aufgelistet.

curl -u ftpuser:ftppass -O ftp://ftp_server/public_html/mysql.php

Der obige Befehl lädt die mysql.php herunter Datei vom FTP-Server und speichern Sie sie im lokalen Verzeichnis.

curl -u ftpuser:ftppass -O ftp://ftp_server/public_html/

Hier verweist die angegebene URL auf ein Verzeichnis. cURL listet also alle Dateien und Verzeichnisse unter der angegebenen URL auf.

Verwendende Bereiche auflisten/herunterladen

cURL unterstützt die Angabe von Bereichen in der URL. Wenn ein Bereich angegeben wird, werden Dateien heruntergeladen, die innerhalb des Bereichs liegen. Es ist hilfreich, Pakete von den FTP-Mirror-Sites herunterzuladen.

curl http://ftp.us.debian.org/debian/pool/main/[a-z]/

Der obige Befehl listet alle Pakete von a-z auf Bereiche im Terminal.

Weitere Informationen zur Verwendung der Verbose-and-Trace-Option

Mit -v erfahren Sie, was passiert Möglichkeit. Diese Option aktiviert den ausführlichen Modus und es werden die Details gedruckt.

curl -v https://www.gnu.org

Der about-Befehl gibt Folgendes aus:

*   Trying 209.51.188.148:443...
* Connected to www.gnu.org (209.51.188.148) port 443 (#0)
* ALPN, offering h2
* ALPN, offering http/1.1
* successfully set certificate verify locations:
*   CAfile: /etc/ssl/certs/ca-certificates.crt
  CApath: none
* TLSv1.3 (OUT), TLS handshake, Client hello (1):
* TLSv1.3 (IN), TLS handshake, Server hello (2):
* TLSv1.2 (IN), TLS handshake, Certificate (11):
* TLSv1.2 (IN), TLS handshake, Server key exchange (12):
* TLSv1.2 (IN), TLS handshake, Server finished (14):
* TLSv1.2 (OUT), TLS handshake, Client key exchange (16):
* TLSv1.2 (OUT), TLS change cipher, Change cipher spec (1):
* TLSv1.2 (OUT), TLS handshake, Finished (20):
* TLSv1.2 (IN), TLS handshake, Finished (20):
* SSL connection using TLSv1.2 / ECDHE-RSA-AES128-GCM-SHA256
* ALPN, server did not agree to a protocol
* Server certificate:
*  subject: CN=emacs.org
*  start date: Jun 17 09:07:40 2020 GMT
*  expire date: Sep 15 09:07:40 2020 GMT
*  subjectAltName: host "www.gnu.org" matched cert's "www.gnu.org"
*  issuer: C=US; O=Let's Encrypt; CN=Let's Encrypt Authority X3
*  SSL certificate verify ok.
> GET / HTTP/1.1
> Host: www.gnu.org
> User-Agent: curl/7.71.1
> Accept: */*
> 
* Mark bundle as not supporting multiuse
< HTTP/1.1 200 OK
< Date: Mon, 13 Jul 2020 21:56:04 GMT
< Server: Apache/2.4.7
< Content-Location: home.html
< Vary: negotiate,accept-language,Accept-Encoding
< TCN: choice
< Strict-Transport-Security: max-age=63072000
< Access-Control-Allow-Origin: (null)
< Accept-Ranges: bytes
< Cache-Control: max-age=0
< Expires: Mon, 13 Jul 2020 21:56:04 GMT
< Transfer-Encoding: chunked
< Content-Type: text/html
< Content-Language: en
< 
...

Mail mit dem SMTP-Protokoll senden

cURL kann auch zum Versenden von E-Mails über das SMTP-Protokoll verwendet werden. Sie sollten die Absenderadresse, die Zieladresse und die IP-Adresse des Mailservers wie unten gezeigt angeben.

curl --mail-from [email protected] --mail-rcpt [email protected] smtp://mailserver.com 

Sobald der obige Befehl eingegeben wurde, wartet er darauf, dass der Benutzer die Daten per E-Mail bereitstellt. Nachdem Sie Ihre Nachricht verfasst haben, geben Sie . ein (Punkt) als letzte Zeile, die die E-Mail sofort versendet.

HTTP/2-Support-Check

Wenn Sie die neueste cURL-Version haben, können Sie den --http2 verwenden Option, um zu prüfen, ob eine bestimmte URL das neue HTTP/2-Protokoll unterstützt. Wenn die Website HTTP/2 unterstützt, sehen Sie daher HTTP/2.0 200 im Header anstelle von HTTP/1.1 200 .

curl -I --http2 https://www.opensource.com

HTTP-Methoden simulieren

Der GET -Methode wird verwendet, um Ressourcen von einer bestimmten URL abzurufen. Die einfache curl https://www.gnu.org/ Befehl verwendet GET als Standard-HTTP-Methode, kann aber auch mit --request GET angegeben werden oder -X GET .

curl --request GET https://www.gnu.org

Der POST -Methode wird verwendet, um Informationen an einen Webserver zu senden (z. B. einen Kommentar in einem Forum). Dies kann mit --request POST angegeben werden oder -X POST .

curl --request POST https://yourwebsite.com

Das DELETE -Methode löscht die Ressource vom Webserver, die einer bestimmten URL zugeordnet ist. Dies kann mit --request DELETE angegeben werden oder -X DELETE .

curl --request DELETE https://yourwebsite.com

Das PUT -Methode erstellt oder ersetzt eine Ressource basierend auf den Daten, die der Client an den Webserver übermittelt. (z. B. Erstellen einer neuen Webseite oder Aktualisieren einer bestehenden). Dies kann mit --request PUT angegeben werden oder -X PUT .

curl --request PUT https://yourwebsite.com

Stellen Sie eine POST-Anfrage mit Parametern

Der folgende Befehl sendet das animal1 und animal2 Parameter zusammen mit den entsprechenden Werten an https://yourdomain.com/animals.php

curl --request POST --data "animal1=cat&animal2=dog" https://yourdomain.com/animals.php

Mit diesem Tipp können Sie das Verhalten eines regulären HTML-Formulars simulieren.

Schlussfolgerung

In diesem Beitrag haben wir was cURL ist erklärt und was Sie mit einigen grundlegenden Befehlen tun können. Weitere Informationen zu cURL finden Sie auf der Website des Projekts.


Linux
  1. Linux-Befehle – Übersicht und Beispiele

  2. 40 häufig verwendete grundlegende Linux-Befehle

  3. 10 beste und beliebteste Icon-Designs für Linux

  4. Nützlichste Nginx-Befehle im Linux-System

  5. Die beliebtesten Tools für Penetrationstests im Jahr 2022

Suchen, studieren und üben Sie Linux-Befehle im Handumdrehen mit Tldr++

Der Unterschied zwischen mehr, weniger und den meisten Befehlen

So finden Sie die am häufigsten verwendeten Befehle unter Linux

Über 40 am häufigsten verwendete Ubuntu 20.04-Befehle

Die nützlichsten FFmpeg-Befehle für die Audio- und Videokonvertierung

90 Linux-Befehle, die häufig von Linux-Systemadministratoren verwendet werden