Linux User Group Oberhausen Rheinland
die mit dem Pinguin tanzen.
12. Januar 2020 Kategorien: Linux. Schlagwörter: command und curl. Kommentare deaktiviert für Dateien mit curl herunterladen

Das Kommando curl ist eines der wenigen Kommandos – neben wget – für den Download von Daten über eine Shell Eingabeauffordung. Da es bei vielen Systemen bereits in der Minimalinstallation vorhanden ist lohnt es sich ein paar der Parameter und Vorgehensweisen bei der Arbeit mit curl kennenzulernen.

Herunterladen einer Datei

Für die Meisten ist bereits das Herunterladen einer Datei mit curl eine Herausforderung. Denn curl gibt die Datei direkt auf der Eingabeausfordung aus statt sie als Datei abzuspeichern.

Die Option -O vor der Download URL speichert die Datei unter dem gleichen Namen unter dem sie auf dem Server liegt. Ein hinter -o (kleines o) angegebener Dateiname erzeugt stattdessen eine Datei mit dem Dateinamen.

Beispiele:

$ curl -O https://static.mylinuxtime.de/curl.txt
$ curl -o mein_curl.txt https://static.mylinuxtime.de/curl.txt

Die Option -O mehrfach mit einer folgenden URL angegeben lädt die Dateien der angegeben URLs herunter und speichert sie unter dem vom Server vorgegebenen Dateinamen.

Server mit selbstzertifiziertem Zertifikat

Obwohl es inzwischen die Möglichkeit gibt SSL Zertifikate für TLS (https://…) zu kostenfrei per Let’s Encrypt zu erstellen, verzichten leider noch einige Anbieter von Webseiten darauf und nutzen selbstzertifizierte Zertifikate. Da diese – wie der Name schon sagt – nicht von einem bekannten Zertifizierer, sondern selbst erstellt sind, wird diesen Zertifikaten von curl nicht vertraut und er verweigert Zugriff auf den Server.

Mit der Option -k vertraut curl diesen unsicheren (insecure) Zertifikaten.

$ curl -k https://static.mylinuxtime.de

Hierbei ist jedoch Vorsicht geboten. Es kann auch sein, dass dem Server durch eine Man-in-the-Middle – Attacke eine andere IP zugewiesen und die Daten über einen anderen Server geleitet werden. Die Übertragung von sensiblen Daten sollte hierüber nicht erfolgen solange man nicht sicher ist, dass Weg zum Server korrekt und direkt ist.

Verbindungsinformationen anzeigen

Ein wichtiges Bordmittel um die Verbindungsinformationen und damit auch z. B: die Information über den Ablauf oder Herausgeber eines Zertifikats herauszubekommen stellt curl mit der Option -v zur Verfügung.

$ curl -v https://static.mylinuxtime.de/curl.txt

Ohne weitere Information gibt der Aufruf auch den Inhalt der Datei aus. Die bereits bekannten Optionen (-o / -O) verhindern dies. Alternativ kann die Option -I nur die Header – Informationen der Datei statt des Dateiinhalts abrufen.

$ curl -Iv https://static.mylinuxtime.de/curl.txt

Umleitungen folgen

Umleitungen auf Webseiten helfen z. B. Dateien unter einem Namen anzusprechen, aber die jeweils aktuelle Version darunter abzulegen.

Trifft curl auf eine solche Umleitung beendet es seine Aufgabe und die Datei oder Ausgabe ist leer. Mit -v aufgerufen ist dann die Location Zeile sichtbar in der die URL steht in der das neue Ziel ist.

Passend zu Location lautet die Option um allen Umleitungen zu folgen -L.

Download weiterführen

Falls ein Download eine größeren Datei vorzeitig abbricht wäre es sinnvoll an der Stelle den Download weiterzuführen an der er abbrach. Die Grundeinstellung bei curl ist bei erneutem Aufruf die Datei vom Anfang an neu zu laden. Mit der Option -C lässt sich die Position für den Dateidownload angeben. Als Argument benötigt diese Option die Position ab der die Datei heruntergeladen werden soll. Das ist entweder die Position in Bytes oder - (Bindestrich). Bei Angabe des - versucht curl die Position für die Fortführung des Downloads selber zu bestimmen.

$ curl -C - -O https://mirror.mylinuxtime.de/nepulinux/nepulinux-latest.iso

So schön sich diese Option auch anhört. Der Server muss dafür mitspielen und das Range – Kommando unterstützen. Ansonsten startet der Download am Anfang der Datei.

Über den Autor

Michael Gisbers ist selbständiger IT-Berater und -Trainer mit den Schwerpunkten Linux-Systemadministration, Datensicherheit und Sicherheitsüberprüfungen. Er ist LPIC-3-zertifiziert und Vorsitzender des OpenRheinRuhr e.V.