Httpie entpuppt sich bei näherem Hinsehen als elegante Synthese aus Curl und Wget. Es eignet sich bestens für den Einsatz in der Pipe.
Die schicke Webseite ist fertig, die dynamischen Elemente schinden Eindruck, die Formulare sind ordentlich formatiert – jetzt fehlt nur noch ein Test. Nutzen Sie Httpie [1], um die Online-Präsenz auf Herz und Nieren zu testen.
Das Tool, dessen Name sich vom buchstabierten “HTTP” (also “aitch-tee-tee-pie”) ableitet, bringt eine Reihe Funktionen mit, die Sie unter Umständen bereits von Wget und Curl kennen. Die Software überträgt also auf verschiedenste Art Daten. Dadurch eignet sich Httpie unter anderem für die detaillierte Analyse von Webseiten. Die Ausgabe leiten Sie bei Bedarf in eine Datei um, auch Eingaben per File klappen.
Die Installation erfolgt entweder per Paketmanagement oder aus dem Github-Repository des Projekts [2]. Sie rufen das Programm mit dem Befehl http Optionen Methode URL auf. Ohne die Angabe von Optionen erhalten Sie den Code der Webseite zurück (Abbildung 1). In der Tabelle “Optionen” finden Sie eine Auswahl an Optionen für den Alltagsgebrauch. Die Tabelle “HTTP-Methoden” zeigt Ihnen einige wichtige Arten des Zugriffs auf einen HTTP-Server.

Abbildung 1: Geben Sie beim Aufruf der Software keine Optionen an, liefert das Programm den Code der entsprechenden Webseite zurück.
|
Option |
Aktion |
|
|
Ausgabeumfang: |
|
|
detaillierte Ausgabe für Pipe / Ausgabeumleitung |
|
|
Download (Langform |
|
|
Name für die Download-Nutzlast |
|
|
unterbrochenen Download fortsetzen |
|
|
Angabe Benutzername |
|
Methode |
Anwendung |
|---|---|
|
|
Inhalte vom Server anfordern (Standard) |
|
|
Kopfzeilen einer Webseite anfordern |
|
|
Ausgabe der Anforderung, wie bei Server angekommen |
|
|
erlaubte HTTP-Methoden auflisten |
|
|
Daten an den Server senden ( |
|
|
Datei an den Server senden |
Ausgabe
Ein Fallstrick bei der Ausgabe von Webseiten besteht darin, dass Httpie erkennt, ob Sie die Ausgabe umleiten oder in eine Pipe weiterreichen. Mit der üblichen Schreibweise gelangen Sie zwar zur Weißglut, aber nicht zum Ergebnis:
$ http URL > Datei
Das funktioniert so nicht. Sie benötigen auf jeden Fall die Option -v oder --print mit weiteren Anweisungen. In Listing 1 finden Sie Beispiele für den Einsatz der Option. Dort fordert das Tool zudem den Webserver auf, die angebotenen HTTP-Methoden aufzulisten.
Listing 1
#! /bin/bash # Beispiel 1: Abfrage einer Web-Seite http 192.168.0.83 echo "--------------------------------------------------" # Beispiel 2: Abfrage der Http-Methoden, # Weiterverarbeiten erfordert die Option -v: echo -n "Mögliche HTTP-Methoden: " http -v options 192.168.0.83 | grep Allow | cut -d: -f2 echo "--------------------------------------------------"
Mit der Option --print HhBh grenzen Sie den Umfang der Ausgabe ein. Sie sehen, was Sie senden und empfangen – ein Vorteil, wenn Sie das Programm in Shell-Skripte einbinden. Ein Beispiel fanden Sie schon im Listing 1. In Abbildung 2 sehen Sie zuerst die Anfrage, die das Programm an den Webserver geschickt hat.
Wenn Sie also HTTP-Status-Codes auswerten möchten, genügt im Shell-Skript dazu ein Einzeiler (Listing 2). Beachten Sie beim Cut-Befehl das Escapen des Leerzeichens, das hier als Feldtrenner zum Einsatz kommt. Nach dem Schrägstrich stehen also insgesamt zwei Leerzeichen.
Listing 2
$ http --print h 192.168.0.83 | grep "HTTP/" | cut -d \ -f2
In der ersten Zeile der Ausgabe des zweiten Beispiels in Abbildung 2 erkennen Sie den Aufbau der entsprechenden Zeile: Je ein Leerzeichen trennt die einzelnen Strings der Zeile, die passende Nachricht OK steht an dritter Stelle.
Dateien herunterladen
Zum Herunterladen von Dateien verwenden Sie die Option -d URL, Abbildung 3 zeigt die entsprechende Ausgabe. Während des Downloads erscheint eine Fortschrittsanzeige im Terminal. Anhand der Header-Angaben erkennen Sie den Typ der Nutzlast, deren Größe sowie das Datum der letzten Bearbeitung.

Abbildung 3: Beim Download mit Httpie zeigt die Software zusätzliche Daten zur Datei und dem ausgebenden Server an.
Bei einer entsprechend konfigurierten Gegenstelle besteht die Möglichkeit, abgebrochene Downloads fortzusetzen (Partial Content). Dazu vergeben Sie einen eigenen Dateinamen für den Download (-o Datei) und nutzen die Option -c zum Fortsetzen. Listing 3 zeigt den kompletten Befehl, in der richtigen Reihenfolge zusammengesetzt.
Listing 3
$ http -dco aprilheft.pdf http://www.linux-user.de/Downloads/LUCE/2017/lu-ce_2017-04.pdf
WebDAV-Download
Mit der Option -a User verbinden Sie sich bei Bedarf mit WebDAV-Diensten und laden Dateien von dort herunter. Das Beispiel aus Abbildung 4 zeigt wegen der Option -v unter anderem die Anforderung (get) mit der Ressource.
Den Inhalt eines WebDAV-Verzeichnisses laden Sie mittels -d ins Arbeitsverzeichnis und betrachten es mit einem Browser, etwa W3m. Optional werten Sie stattdessen die Ausgabe per Pipe aus und starten in der Folge einen Download oder löschen eine Datei. Das Beispiel aus Listing 4 besteht (wegen des HTML-Codes) aus viel Zerlegerei von Zeichenketten, funktioniert aber.
Listing 4
$ http -a hz -v 192.168.0.83/webdav/ | \n cut -d\ -f8 | cut -d\> -f1 | grep pdf | \n cut -d \= -f2 | tr -d \"
http: password for hz@192.168.0.3:
aprilheft.pdf
lu-ce_2017-03.pdf
lu-ce_2017-04.pdf
Das Löschen geschieht mittels der Methode delete (Abbildung 5). Dabei geben Sie am besten die komplette Ressource an – im Test funktionierten Wildcards wie der Asterisk nicht.

Abbildung 5: Möchten Sie ein Datei im WebDAV-Verzeichnis löschen, setzt das voraus, dass Sie die komplette Ressource angeben.
Einsatz im Skript
Damit haben Sie bei Weitem noch kein selbstgebasteltes Werkzeug zum Überwachen des Internets an der Hand. Vielmehr greifen Sie damit auf die Steuerung von Geräten mit Web-Interface oder Seiten mit Messwerten zu. Oft besitzen diese kein Interface, um eine E-Mail zur Benachrichtigung zu versenden. Httpie eröffnet die Möglichkeit, in regelmäßigen Abständen die Webseite zur Kontrolle abzurufen.
Ein Beispiel dafür zeigt das Shell-Skript aus Listing 5. Es überwacht den Inhalt einer kleinen Webseite. Taucht das Schlüsselwort “leer” auf, ist alles in Ordnung. Eine Mail versendet das Skript in diesem Fall nur, wenn Sie es das erste Mal starten oder die Seite vom Fehlerzustand wieder zur Normalität zurückkehrt.
Listing 5
#! /bin/bash
# kontrolle.sh
# Variable zur Übernahme des Exit-Codes und
# Variable, die sich den vorherigen Zustand merkt
l=0
merker=1
while true; do
http -v 192.168.0.83 | grep "leer" > /dev/null
l=$(echo $?)
if [ $l -eq 0 ]; then
if [ $merker -eq 1 ]; then
echo "Meldung: Leer" | mail -s"Normalmeldung" hz@localhost
# Rückstellen $merker auf "Normalzustand"
merker=0
fi
else
if [ $merker -eq 0 ]; then
echo "Meldung: Fehler" | mail -s"FEHLERHINWEIS" hz@localhost
# $merker auf "Fehler" stellen
merker=1
fi
fi
sleep 10
done
Anders herum sorgt die Variable merker dafür, dass Sie im Postfach, das die Mails empfängt, pro Auftreten des Fehlerzustands auch nur eine Alarm-Mail finden. Abbildung 6 zeigt die Übersicht über die Mails auf dem Testsystem, in Abbildung 7 sehen Sie die Seiten, im Normal- (oben) und Fehlerzustand (unten).

Abbildung 6: Die Variable merker verhindert, dass das Skript ununterbrochen Mails mit immer demselben Status versendet.

Abbildung 7: Für den Test des Skripts kamen zwei Seiten zum Einsatz, die sich jeweils durch die Nachricht unterscheiden.
Fazit
Mit Httpie steht ein kompaktes, gut abgerundetes Werkzeug bereit, das speziell Downloads und Analysen besonders einfach macht. Suchen Sie einen Einblick in die weiteren Funktionen der Software, dann finden Sie in der Manpage und auf der Projektseite reichlich weiterführende Informationen.
Der Autor
Harald Zisler beschäftigt sich seit vielen Jahren mit Linux und FreeBSD. Er verfasst Zeitschriftenbeiträge und Bücher zu den Themen Technik und EDV. Aktuell erschien die vierte Auflage von “Computer-Netzwerke” beim Rheinwerk Verlag.
Infos
-
Httpie: https://httpie.org
-
Download: https://github.com/jakubroztocil/httpie







