curl zur Abfrage von REST-APIs benutzen

Die Aufgabe des freien Kommandozeilentools curl ist einfach beschrieben: Datentransfer. So unterstützt curl unterschiedlichste Protokolle wie FTP, HTTP, HTTPS, IMAP, SCP, SMB und viele mehr. Ein einfacher Download einer Datei über HTTP bzw. HTTPS würde mit curl wie folgt aussehen:

curl -O https://example.com/file.zip

Auch ein Transfer z.B. per FTP ist kein Problem:

ftp://example.com/file.zip

Allerdings beherrscht curl wesentlich mehr Operationen als nur das Herunterladen von Dateien. So kann curl genutzt werden, um REST-APIs zu benutzen. Diese APIs arbeiten nicht nur mit dem HTTP-Verb GET, sondern auch mit anderen Verben wie POST und PUT. Ein einfacher GET-Request wurde mittels curl wie folgt aussehen:

curl -X GET https://example.com/

Ein POST-Request wird auf die gleiche Art durchgeführt:

curl -X POST https://example.com/

Sollen zusätzlich Daten übertragen werden, so geschieht dies mit dem Parameter -d:

curl -X POST https://example.com/  -d '{
	field: "data",
	field2: "data",
	field3: "data"
}'

Damit werden die Daten im Body des Requests mitgesendet. Auch die Übergabe von Headern ist mittels curl möglich:

curl -X POST https://example.com/ 
 -H 'HeaderField: headerValue'
 -d '{
	field: "data",
	field2: "data",
	field3: "data"
}'

Manche APIs und andere Services blockieren Abrufe über curl manchmal. Dabei wird der Useragent von curl ausgesperrt. Allerdings kann dieser einfach geändert werden:

curl -A "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:66.0) Gecko/20100101 Firefox/66.0" -X GET https://example.com/

Damit können solche fragwürdigen Maßnahmen, welche zum Ausschluss von curl führen, umgangen werden. Daneben verfügt curl über viele weitere Operationen bzw. Optionen. So kann z.B. mittels des Parameters -I nur der Header des Response bezogen werden:

curl -I -X GET https://example.com

Somit bietet curl die entsprechende Funktionalität um REST-APIs für Tests und ähnliches flexibel abzufragen.

WordPress ohne FTP Zugang aktualisieren

Wenn man unter WordPress ein Plugin aktualisieren oder auch WordPress selbst auf die neuste Version bringen möchte, so wird man aufgefordert Verbindungsinformationen für den entsprechenden FTP Server einzugeben.

Die Aufforderung Verbindungsinformationen einzugeben

Dankenswerter Weise geht es aber auch einfacher. So legt man im Verzeichnis “wp-content” einfach einen Ordner “upgrade” an. Diesem Ordner sowie den Ordnern “plugins” und “themes” gibt man anschließend per FTP Schreibrechte. Nun muss nur noch die “wp-config.php” bearbeitet werden. In diese fügt man folgende Zeilen hinzu:

/* Ermöglicht das Update ohne FTP */
define('FS_METHOD', 'direct');

Damit wird es ermöglicht Updates ohne FTP durchzuführen.

FTP mit dem Midnight Commander

Da war ich nun auf der Konsole und wollte mich bequem mit einem FTP Server verbinden um einige Daten herunterzuladen. Nach einigem Überlegungen fiel mir ein das der Midnight Commander (mc) dies doch beherscht. Nur die Syntax muss man sich merken:

/#ftp:seeseekey:geheim@seeseekey.net

Sprich Nutzername, Passwort und dann der entsprechende Server. Danach kann man problemlos Dateien von dem FTP kopieren.

Weitere Informationen gibt es unter:
http://wiki.ubuntuusers.de/Dateimanager

FTP Backup mittels wget unter Windows

Gründe für ein FTP Backup gibt es viele. Dabei geht es hier nicht um die Richtung Lokal zu FTP sondern um die Richtung FTP zu Lokal. Und schon dann am besten noch automatisch, also ab ans Werk. Damit das ganze unter Windows funktioniert benötigen wir zu aller erst wget für Windows welches unter http://gnuwin32.sourceforge.net/packages/wget.htm zu finden ist.

Nun benötigen wir noch ein Skript welches wir regelmäßig anstoßen können (über Geplante Tasks). Das ganze könnten wir dann z.B. ftp-backup.bat nennen.

REM FTP Backup

REM Ermittelt das Datum
set jahr=%date:~-4%
set monat=%date:~-7,2%
set tag=%date:~-10,2%
set sortabledate=%jahr%-%monat%-%tag%

set backuppath=E:\FTP Backup\%sortableDate%

wget –directory-prefix=”%backuppath%” -r -l0 -np -i login.txt

Der Backuppfad muss natürlich noch angepasst werden. In der besagten login.txt muss folgendes stehen:

ftp://nutzername:passwort@example.com/

Und schon haben wir ein vollautomatisches FTP Backup.

Weitere Informationen gibt es unter:
http://de.wikipedia.org/wiki/Wget
http://de.wikipedia.org/wiki/File_Transfer_Protocol