Client Httpie für WebDAV- und HTTP-Abfragen

Aus LinuxUser 06/2017

Client Httpie für WebDAV- und HTTP-Abfragen

© Bannosuke, 123RF

Einfach elegant

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.

Abbildung 1: Geben Sie beim Aufruf der Software keine Optionen an, liefert das Programm den Code der entsprechenden Webseite zurück.

Option

Aktion

--print HBhb

Ausgabeumfang: H Header, B Body, h Antwort Header, b Antwort Body

-v

detaillierte Ausgabe für Pipe / Ausgabeumleitung

-d URL

Download (Langform --download)

-o Datei

Name für die Download-Nutzlast

-c

unterbrochenen Download fortsetzen

-a User

Angabe Benutzername

Methode

Anwendung

GET

Inhalte vom Server anfordern (Standard)

HEAD

Kopfzeilen einer Webseite anfordern

TRACE

Ausgabe der Anforderung, wie bei Server angekommen

OPTIONS

erlaubte HTTP-Methoden auflisten

POST

Daten an den Server senden (Feld=Wert)

PUT

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.

Abbildung 2: Mit zus&auml;tzlichen Parametern f&uuml;r die Option <code>--print</code> schr&auml;nken Sie die Ausgabe ein.

Abbildung 2: Mit zusätzlichen Parametern für die Option --print schränken Sie die Ausgabe ein.

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&auml;tzliche Daten zur Datei und dem ausgebenden Server an.

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.

Abbildung 4: So funktioniert das Herunterladen einer Datei aus einer WebDAV-Ressource.

Abbildung 4: So funktioniert das Herunterladen einer Datei aus einer WebDAV-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&ouml;chten Sie ein Datei im WebDAV-Verzeichnis l&ouml;schen, setzt das voraus, dass Sie die komplette Ressource angeben.

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 <code>merker</code> verhindert, dass das Skript ununterbrochen Mails mit immer demselben Status versendet.

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


Abbildung 7: F&uuml;r den Test des Skripts kamen zwei Seiten zum Einsatz, die sich jeweils durch die Nachricht unterscheiden.

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.

DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDF
LinuxUser 06/2017 KAUFEN
EINZELNE AUSGABE
ABONNEMENTS
TABLET & SMARTPHONE APPS
E-Mail Benachrichtigung
Benachrichtige mich zu:

Hinweis: Dieser Artikel ist älter als ein Jahr, enthaltene Informationen sind möglicherweise veraltet.

0 Kommentare
Älteste
Neuste Beste Bewertung
Nach oben