AMIGA-Magazin · Ausgabe 7/03 · Workshop: cURL

Aktuelles Heft 7/03

Das Internet in einer Shell

Wer cURL einsetzt, kann vollautomatisch das Internet mittels Shell-Script für Up- und Downloads verwenden. Das Tool gibt es auch für den Amiga ­ wir zeigen Ihnen, wie es funktioniert.

von Hartwig Tauber


Massenhaft:
Auf der Webseite amiga.sourceforge.net gibt es sehr viel kleine Unix-Tools für Amigas.
Die Funktion von cURL klingt auf den ersten Blick wenig spektakulär. Das Programm wurde entwickelt, um mittels Kommandozeilen-Befehl Dateien von einem Server im Internet oder LAN abzuholen bzw. an diesen zu schicken. Das Besondere daran ist jedoch die Fülle an Protokollen, die cURL für diese Aufgabe nutzen kann. Denn neben FTP kann das Tool auch HTTP(S), GOPHER, DICT, TELNET, LDAP und FILE als Übertragungsprotokoll nutzen. Dazu kommt die Unterstützung von Platzhaltern, um gleich mehrere Dateien in einem Rutsch zu übertragen.

Nach dem Entpacken des bereits fertig verfügbaren Amiga-Binary-Archives ist cURL sofort einsatzbereit. Der erste Test kann sofort in der Shell gemacht werden, indem Sie

curl www.amiga-magazin.de

eingeben. Nach wenigen Sekunden erscheint der HTML-Code der Seite im Textformat auf dem Bildschirm. Damit ist auch schon die einfachste Anwendung des Befehles klar. Wird als einziger Parameter eine Internetadresse übergeben, so gibt cURL das vom Server zurückgelieferte Ergebnis über stdout aus. Das gilt übrigens für alle Arten von Ergebnissen, auch wenn diese Binärdateien sind. Wer beispielsweise versucht mit

curl www.amiga-magazin.de/bilder/amiga.gif

Lebendig:
Die Entwicklung von cURL geht laufend weiter. Neue Versionen sind im Internet erhältlich.

den Amiga-Schriftzug abzurufen, wird mit einem Buchstabensalat »überrascht«. Die reine Ausgabe der Daten im Shell-Fenster wird deshalb nur selten das Haupteinsatzgebiet von cURL sein. Öfter kommt wahrscheinlich die zusätzliche Option -o zum Einsatz, welche das Ergebnis in eine Datei umleitet. Um den erwähnten Schriftzug auf die eigene Festplatte zu befördern, reicht der Aufruf von

curl www.amiga-magazin.de/bilder/amiga.gif -o "Daten:Bilder/amiga.gif"

cURL zeigt während der Übertragung den Fortschritt in Textform an, wobei eine ganze Reihe weiterer Informationen, wie die aktuelle und die durchschnittliche Übertragungsgeschwindigkeit, ebenfalls ausgegeben werden. Damit lassen sich schnell und einfach Dateien auch von Internetservern abholen, die einen Zugriff über typische Download-Protokolle wie FTP nicht erlauben. Da cURL bei dieser Methode ausschließlich den Standard-HTTP-Port (80) verwendet, kann man sich auf diese Weise elegant an allzu streng konfigurierten Firewalls »vorbeischummeln«. Denn man geht als Internetsurfer durch.

Seine wirkliche Stärke zeigt cURL erst, wenn in der angegebenen Adresse auch Platzhalter verwendet werden. Dann ist es beispielsweise möglich, gleich mehrere Dateien, die z.B. nummeriert sind, mit einem einzigen Aufruf auf die Festplatte zu transferieren. Nähere Informationen über die Platzhalter finden Sie im Info-Kasten »Platz da!«.

Wenn Sie beispielsweise die ersten zwanzig News-Meldungen des Monats Juni von amiga-news.de lokal auf die Festplatte kopieren möchten, genügt der Aufruf nach folgendem Muster:

curl http://www.amiga-news.de/de/news/AN-2003-06-000[01-20]-DE.html -o daten:amiganews/juni#1.html

Der Platzhalter"#1" im lokalen Dateinamen sorgt dafür, dass die Nummerierung vom ursprünglichen Platzhalter übernommen wird. Kommen innerhalb der übergebenen Adresse mehrere Platzhalter vor, so können diese durch "#" und der jeweiligen Nummer auch in der lokalen Bezeichnung verwendet werden. Sollte eine Seite einmal nicht existieren, arbeitet cURL dennoch weiter, da dann zumindest eine Fehlermeldung vom Server zurückgegeben wird und diese einfach in die Datei geschrieben wird.

FTP per Skript
Platz da!

cURL bietet die Möglichkeit, mit Hilfe von einfachen Platzhaltern mit einem einzigen Aufruf gleich eine größere Anzahl an Dateien abzurufen. Folgende Platzhalter sind erlaubt:

{ausw1,ausw2,ausw3}:
Beim Einsatz von geschwungenen Klammern ersetzt cURL den Platzhalter nacheinander durch die einzelnen Einträge innerhalb der Klammern, die durch einen Beistrich getrennt sind. Die Angabe von
http://{www,amiga}.sourcforge.net
wird von cURL in http://www.sourceforge.net und http://amiga.sourceforge.net umgesetzt.

[bereichanfang-bereichende]
:
Mit Hilfe der eckigen Klammern wird ein Bereich angegeben, den cURL durchläuft. Liegen beispielsweise Bilder in nummerierter Reihenfolge im Server, so kann man mit http://user.meinesite.org/max/urlaub[1-14].jpg die ersten 14 Bilder vom Server abrufen. Bei Zahlen gibt es die Möglichkeit, auch führende Nullen auffüllen zu lassen, indem im erwähnten Beispiel der Platzhalter durch [01-14] ersetzt wird. Auch Buchstabenbereiche sind erlaubt. [b-j] setzt so nacheinander die entsprechenden Buchstaben ein.

Mehrfach-Platzhalter:

Besonders raffiniert ist der Einsatz von mehreren Platzhaltern innerhalb einer URL. Bis zu neun verschiedene sind pro übergebene Adresse möglich. So hat cURL auch mit http://user.meineseite.org/{max,robert,paul}/urlaub19[95-99]/bild[01-99].jpg kein Problem.

cURL beschränkt sich nicht nur auf das HTTP-Protokoll. Auch zu FTP-Servern kann problemlos Verbindung aufgenommen werden. Dabei spielt der Parameter -u eine wichtige Rolle. Mit ihm wird, durch einen Doppelpunkt getrennt, Username und Passwort übergeben:

curl -u max:geheim ftp://ftp.superfilme.xy/ neuesterfilmpart[1-10]. avi -o daten:filme/ neuesterfilm#1.avi

Im Beispiel meldet sich cURL als User max mit dem Passwort geheim am Server an und holt zehn Dateien ab. Da bei einer Benutzung innerhalb eines Skripts das Passwort völlig ungeschützt wäre, empfiehlt es sich, lediglich den Usernamen anzugeben. Dann fragt cURL mittels Eingabeprompt nach dem Passwort, was eine höhere Datensicherheit gewährleistet. Gerade bei umfangreichen FTP-Downloads wird das gleichzeitige Surfen oft zur Qual, da fast die gesamte Bandbreite für die Datenübertragung verwendet wird. Glücklicherweise bietet cURL auch hier eine Lösung an, indem die maximale Bandbreite durch den -limit-rate-Parameter beschränkt wird. Als Wert wird eine Zahl, gefolgt von der Größeneinheit übergeben. Dabei steht bei den Einheiten k für Kilobyte, m für Megabyte und g für Gigabyte. Die Groß- und Kleinschreibung der Größeneinheit wird nicht berücksichtigt. Soll beim oben angeführten Beispiel die maximale Bandbreite auf 32 kBit beschränkt werden, ist dies mit folgender Erweiterung möglich:

curl -u max:geheim -limit- rate 32k
ftp://ftp.superfilme.xy/neuesterfilmpart[1-10].avi -o daten:filme/neuesterfilm#1.avi

Besitzer von älteren Versionen von cURL sollten zumindest zur Version 7.10 updaten, da diese praktische Funktion erst neu hinzugekommen ist.

Formular-Automatisierung
Eine große Hilfe ist cURL auch dann, wenn man regelmäßig Daten mittels Webformular aktualisiert oder eingibt. Diese Aufgabe kann das Tool automatisch übernehmen. Besonders einfach ist das bei Formularen, die für die Übergabe der Daten an den Server die GET-Methode verwenden. Erkennbar ist dies entweder im HTML-Source des Formulars (<form>-Tag) oder an der Form des URLs, der das Ergebnis nach dem Absenden anzeigt. Bei der GET-Methode werden die Daten direkt an den URL angehängt, wobei vor dem ersten Datenfeld ein ?-Zeichen und zwischen allen weiteren Feldern ein &-Zeichen eingefügt wird:

http://www.xyz.com/cgi/formergebnis.pl?name=Amiga&id=17

zeigt an, dass in das Feld name der Wert Amiga, in id die Zahl 17 eingegeben wurde. Auf dieselbe Weise können die Formulardaten auch mittels cURL übergeben werden. Dazu genügt die Eingabe des Befehls

curl http://www.xyz.com /cgi/formergebnis.pl?name=Amiga&id=17

Die Antwort des Servers wird dann im Shell-Fenster ausgegeben. Anders verhält es sich, wenn für die Übergabe der Daten die POST-Methode zum Einsatz kommt. Sie ist immer dann notwendig, wenn längere Texte in Formulare eingegeben werden, da die URL-Länge beschränkt ist und somit nicht beliebig viele Informationen mittels GET übergeben werden können.

Ein POST-Formular überträgt die Daten gesondert, wobei hier nahezu keine Größenbeschränkung besteht. cURL kann auch diese Methode abbilden, indem die Feldinhalte mit Hilfe des -d-Parameters übergeben werden. Das oben angeführte POST-Beispiel würde dann folgendermaßen aussehen:

curl -d "name=Amiga&id=17" http://www.xyz.com/cgi/formergebnis.pl

Übersichtlich:
Die Dokumentation der Software hilft auch bei schwierigen Problemen.
Umfangreich:
Die komplette Liste aller Parameter von cURL füllt bereits mehr als eine Bildschirmseite.

Es macht für cURL übrigens keinen Unterschied, ob die Daten in einem sichtbaren oder einem versteckten (HIDDEN) Eingabefeld untergebracht sind, da sich diese Unterscheidung nur auf die Anzeige des Formulars, nicht jedoch auf die Übergabe der Daten bezieht. Bei der Programmierung eines entsprechenden cURL-Skripts sollte man allerdings darauf achten, dass auch die versteckten Felder (HIDDEN) berücksichtigt werden, um korrekte Ergebnisse am jeweiligen Webserver sicher zu stellen und nach der Abfrage auch die richtige Antwort zu bekommen.

Schon diese Beispiele zeigen, welches Potenzial in dem auf den ersten Blick unscheinbaren Befehl steckt. Vor allem bei der Integration in umfangreiche Skripts (z.B. ARexx) bieten sich viele Anwendungsmöglichkeiten. Angefangen vom automatischen Download von Dateien bis hin zu Datenübergabe an den Server steht dem Amiga-User die gesamte Welt des Internets mit Hilfe von cURL auch in der Shell oder per Aufruf aus Anwendungen zur Verfügung.

lb

Informationen: cURL, WWW: http://curl.haxx.se


Hauptseite © 2003 All Rights Reserved. Alle Rechte vorbehalten Franzis' Verlag GmbH
Veröffentlichung und Vervielfältigung nur mit schriftlicher Genehmigung des Verlags

Kommentare, Fragen, Korrekturen und Kritik bitte an Webmaster AMIGA schicken.
Zuletzt aktualisiert am 9.6. 2003.