Links2 und W3m: Webbrowser für die Shell

Aus LinuxUser 01/2018

Links2 und W3m: Webbrowser für die Shell

© Maksim Pasko, Fotolia

Minimalistisch

Auf der Shell lassen sich nicht nur Systemarbeiten erledigen: Es gibt auch vielseitige Webbrowser, die abseits der GUI arbeiten.

Webbrowser für die Shell bieten sich für den Fall an, dass man eine Webseite öffnen muss, aber nur über eine langsame Verbindung mit der Außenwelt in Verbindung steht. Solche schlanken Browser kommen oft auch im Zusammenhang mit Datenbankanwendungen zum Einsatz. Dazu erstellt man möglichst schnörkellose Abfragemasken für den Webserver, die Query selbst erfolgt über eine SSH-Verbindung zum entfernten Rechner. So erspart man sich die Konfiguration der auf den Clients laufenden Webbrowser. Daneben machen sich textbasierte Webbrowser innerhalb von Skripten für Auswerte- und Kontrollzwecke im Rahmen automatisierter Webzugriffe nützlich.

Stellvertretend für die Vielzahl an Browsern für die Shell liegt der Fokus dieses Artikels auf Links2 und W3m. Beide kommen für viele Einsatzgebiete infrage und beherrschen das Abrufen von Webseiten über verschlüsselte HTTPS-Verbindungen. Bei Eingaben in Formularen öffnet sich, anders als bei den grafischen Pendants, in der Regel eine gesonderte Eingabezeile. Im Praxistest müssen sich die Textbrowser jeweils mit einer einfachen Ausgabemaske eines nur aus dem LAN heraus erreichbaren Webservers und einer normalen Webseite bewähren.

Links2

Der Links2-Browser [1] ging 2005 aus dem Projekt Links [2] des tschechischen Programmierers Mikulas Patocka hervor. Auch Elinks [3], eine weitere Alternative, stammt von diesem Programm ab.

Links2 beherrscht sowohl den Text- als auch den Grafikmodus, taugt also gleichermaßen für die Konsole und die GUI. Den Modus wählen Sie bereits beim Start. Für den Grafikmodus rufen Sie das Programm mit links2 -g auf, an das Kommando hängen Sie die URL der gewünschten Webseite an.

Abbildung 1 zeigt die spartanisch gestaltete Seite im Textmodus, Abbildung 2 im Grafikmodus. Die Darstellung einer normalen Webseite durch Links2 zeigt Abbildung 3 am Beispiel der LinuxUser-Homepage. Der Grafikmodus (Abbildung 4) funktioniert nur bei einer Display-Umleitung oder der Arbeit in einer grafischen Oberfläche.

Abbildung 1: Links2 im Textmodus auf der internen Testseite.

Abbildung 1: Links2 im Textmodus auf der internen Testseite.


Abbildung 2: Links2 im Grafikmodus auf der internen Testseite.

Abbildung 2: Links2 im Grafikmodus auf der internen Testseite.


Abbildung 3: Links2 im Textmodus auf der LinuxUser-Webseite.

Abbildung 3: Links2 im Textmodus auf der LinuxUser-Webseite.


Abbildung 4: Links2 im Grafikmodus auf der LinuxUser-Webseite.

Abbildung 4: Links2 im Grafikmodus auf der LinuxUser-Webseite.

Wichtige Optionen zum Aufruf von Links2 fasst die Tabelle “Links2: Optionen” zusammen. Die Bedienung des Browsers erfolgt über wenige Tasten (Tabelle “Links2: Steuerung”), die sich leicht merken lassen. Ein Menü rufen Sie mit der Taste [F9] auf (Abbildung 4).

Aufgabe

Option

Hinweis

Grafikmodus benutzen

-g

ohne: Textmodus

Treiber für Grafikmodus

-driver x|svgalib|fb|directfb

in der GUI nicht notwendig

Webseite formatiert in Datei umleiten

-dump

Webseite unformatiert in Datei umleiten

-source

Proxy angeben

-http-proxy Host|IP:Port

abweichendes Download-Verzeichnis

-download-dir Ordner

Anonymisierter Modus

-anonymous

kein Download, kein Auflisten von Dateien

HTML-Frames rendern

-html-frames 1

Links nummerieren

-html-numbered-links 1

Links lassen sich über Zifferntasten schnell aufrufen

Browser als Firefox ausgeben

-http.fake-firefox 1

Senden “Do-not-track”

-http.do-not-track 1

Referer angeben

-http.referer 0|1|2|3|4

0: kein Referer, 1: angeforderte URL als Referer, 2: frei definierter Referer, 3: realer Referer, 4: realer Referer nur am gleichen Server

Angabe Referer

-http.fake-referer Referer

Angabe abweichender Browser

-http.fake-user-agent Browser

Zusatzangaben für HTTP-Header

-http.extra-header Angabe

Aufgabe

Taste

Menü einschalten

[F9]+ oder [Esc]

Dateimenü

[F10]

nächster Link

[Pfeil-unten]

voriger Link

[Pfeil-oben]

Seite vor

[Bild-unten] oder Leertaste

Seite zurück

[Bild-oben]+ oder [B]

nächster Frame

[Tab]

nach unten scrollen

[Entf]

nach oben scrollen

[Einfg]

nach rechts scrollen

[AltGr]+[**8**]

nach links scrollen

[AltGr]+[**9**]

Seitenanfang

[Pos1]

Seitenende

[Ende]

Eingabe

Eingabetaste

Suche (vorwärts)

[Umschalt]+[7]

Suche (rückwärts)

[Umschalt]+[ß]

nächster Treffer

[N]

voriger Treffer

[Umschalt]+[N]

Seite neu laden

[Strg]+[Umschalt]+[R]

Gehe zu neuer URL

[G]

Gehe zu URL

[Umschalt]+[G]

Download

[D]

Ansicht Quelltext/formatiert

[AltGr]+[ß]

Programmende

[Q]

Surfen mit W3m

Mit W3m [4] verwenden Sie einen robusten und schlanken Text-Webbrowser. Abbildung 5 zeigt ihn mit einer einfachen Tabelle. Er übernimmt jedoch auch andere Aufgaben: Als Ersatz für Less bietet W3m Such- und Steuerungsmöglichkeiten zur Anzeige umfangreicher Textdateien an, auch innerhalb einer Pipe. Installieren Sie den Browser unter Debian oder Ubuntu über das Paket w3m-img, dann zeigt er auch Bilder an, wenn Sie ihn aus einem X-Terminal heraus benutzen (Abbildung 6).

Abbildung 5: W3m im Textmodus auf der internen Testseite.

Abbildung 5: W3m im Textmodus auf der internen Testseite.


Abbildung 6: W3m mit Grafik-Anzeige auf der LinuxUser-Webseite.

Abbildung 6: W3m mit Grafik-Anzeige auf der LinuxUser-Webseite.

Über eine Reihe von Schaltern (siehe Tabelle “W3m: Optionen”) lässt sich W3m schon beim Start anpassen. Die Tabelle “W3m: Bedienung” hilft Ihnen, das laufende Programm zu steuern. Das Programm unterstützt beispielsweise das Öffnen mehrerer Webseiten in Tabs, ähnlich wie die GUI-Brüder. Auch Bookmarks lassen sich problemlos setzen. Javascript unterstützt der Textbrowser allerdings nicht.

Aufgabe

Option

Zeilennummern in Ausgabe

-num

nur IPv4-Adressen

-4

nur IPv6-Adressen

-6

Einsatz als Newsreader

-m

komplette Webseite auf Standardausgabe lenken

-dump

nur Header auf Standardausgabe lenken

-dump_head

Post-Methode mit Datei verwenden

-post Datei

Start im interaktiven Modus

-v

Leerzeilen zusammenfassen

-s

weitere Optionen anzeigen

-show-option

weitere Option angeben

-o Option

Aufgabe

Taste

URL anzeigen

[C]

URL am Cursor anzeigen

[U]

URL eingeben

[Umschalt]+[U]

Seite auffrischen

[Umschalt]+[R]

Seite zurück

[S]

Hyperlinks auflisten

[Umschalt]+[L]

nächster Link

[Tab]

voriger Link

[Umschalt]+[Tab]

nächstes Wort

[W]

voriges Wort

[Umschalt]+[W]

zeichenweise Navigation

Pfeiltasten

Hyperlink folgen

[Eingabe]

Seitenanfang

[Pos1]

Seitenende

[Ende]

Zeile N anspringen

[Esc]+[G],N

Neuen Tab anlegen

[Umschalt]+[T]

Tab vorwärts

[AltGr]+[**0**]

Tab rückwärts

[AltGr]+[**7**]

Tab schließen

[Strg]+[Q]

Lesezeichen laden

[Esc]+[B]

Lesezeichen speichern

[Esc]+[A]

Download

[A]

Programmende

[Q]

Eigene IP ermitteln

In vielen Situationen benötigt man die öffentliche IP-Adresse des eigenen Rechners. Damit können Sie entweder die Netzwerkkonfiguration selbst automatisiert überprüfen oder einen direkten Datenaustausch zwischen zwei Rechnern vorbereiten. Das Shell-Skript eigene-ip.sh in Listing 1 zeigt, wie Sie die Adresse mit Unterstützung von W3m ermitteln.

Listing 1

#!/bin/bash
# eigene-ip.sh
# Öffentliche IP-Adresse ermitteln
IPADRNET=$(w3m -dump http://www.monip.org/ | awk -F': ' '/IP/ { print $2 }')
# IP-Adresse im LAN ermitteln
IPADRLOC=$(echo -n $(ip addr show | grep 'inet ' | awk '{ print $2}' | cut -d'/' -f1))
printf "Internet IP: $IPADRNET\n"
printf "Lokale IPs:  $IPADRLOC\n"

Zur Ermittlung der WAN-Adresse lassen Sie W3m die Seite von Monip.org aufrufen. Mittels Grep fischt das Skript dann die Zeile mit der IP-Adresse aus der abgerufenen Seite, anschließend reduzieren die Kommandos Awk und Cut die Ausgabe auf das gewünschte Ergebnis (Listing 2).

Listing 2

$ ./eigene-ip.sh
87.152.123.163
127.0.0.1 192.168.188.64

Bei Bedarf lassen Sie die letzten zwei Zeilen mit der Ausgabe weg und verschicken stattdessen eine automatische E-Mail mit der Adresse an einen anderen Rechner im Internet, damit dieser dann automatisiert eine Verbindung startet. Sie sollten hierbei aber aus Sicherheitsgründen die Information verschlüsseln.

Webserver überwachen

Um zu prüfen, ob ein Webserver seine Arbeit tut, benötigen Sie nicht gleich ein Monitoring-Schwergewicht wie Nagios [5]. Für eine einfache Abfrage genügt ein simples Shell-Skript, wie nochda.sh in Listing 3 demonstriert.

Listing 3

#!/bin/bash
# nochda.sh
while true; do
  clear
  echo "Überwachung Webserver von TESTFELD"
  echo "Abbruch mit [Strg]+[C] möglich"
  echo "----------------------------------"
  date
  echo ""
  w3m -dump_head 192.168.0.83/datenbank.html | head -1 | grep 200
  if [ $? -eq 0 ]; then
    echo "Server und Seite erreichbar"
    sleep 10
    continue
  fi
  w3m -dump_head 192.168.0.83/datenbank.html | head -1 | grep 404
  if [ $? -eq 0 ]; then
    echo "Server erreichbar, Seite nicht erreichbar"
    sleep 10
    continue
  fi
  w3m -dump_head 192.168.0.83/datenbank.html | head -1 | grep w3m
  if [ $? -gt 0 ]; then
    echo "Webserver nicht erreichbar, prüfe Rechner ..."
    ping -c 1 192.168.0.83
    if [ $? -eq 0 ]; then
      echo "Rechner erreichbar"
      sleep 10
      else
      echo "Netzwerkfehler oder Maschine außer Betrieb!"
      sleep 10
    fi
  fi
done

Listing 4

$ ./nochda.sh
Überwachung Webserver von TESTFELD
Abbruch mit [Strg]+[C] möglich
----------------------------------
Mi 29. Nov 17:34:06 CET 2017
HTTP/1.1 200 OK
Server und Seite erreichbar
$ ./nochda.sh
Überwachung Webserver von TESTFELD
Abbruch mit [Strg]+[C] möglich
----------------------------------
Mi 29. Nov 17:34:21 CET 2017
HTTP/1.1 404 Not Found
Server erreichbar, Seite nicht erreichbar

Bei der Überwachung des Webdiensts kann es zu verschiedenen Fehlersituationen kommen: Oft ist die Seite selbst nicht erreichbar. Möglicherweise hängt nur der Serverprozess, der Rechner selbst meldet sich aber noch. Im schlimmsten Fall lässt sich der Rechner grundsätzlich nicht mehr erreichen. Auch die Namensauflösung kann Fehler beinhalten, worauf wir hier aber nicht näher eingehen.

Für unseren Server-Check genügt es, W3m nur die Kopfzeilen ausgeben zu lassen (Option: -dump_head). Dabei werten wir die erste Zeile der Ausgabe aus. Die erste Zeile des Seitenkopfs enthält im Erfolgsfall, also wenn der Webserver und die Seite wie gewünscht funktionieren, den HTTP-Statuscode 200. Läuft der Web-Service zwar, kann aber die angeforderte Seite nicht ausliefern, lautet der Fehler-Code 404.

Kann der Browser den Webdienst nicht erreichen, erscheint in der Ausgabe in jedem Fall der Begriff w3m. In diesem Fall führt das Skript noch ein Ping auf das Zielsystem aus und wertet das Ergebnis entsprechend aus. Das Shell-Skript in Listing 3 wertet die Ergebnisse aus und zeigt seine Erkenntnisse am Bildschirm an. Sie können hier beliebige Erweiterungen vornehmen.

In Listing 4 zeigt unser Skript beim ersten Aufruf, dass der Webserver und die gewünschte Seite wie gewünscht funktionieren. Nun ändern wir den Namen der HTML-Datei auf dem Server, sodass das gewünschte Ziel nicht mehr existiert. Beim nächsten Aufruf (Zeile 10) meldet das Skript dies entsprechend.

Anschließend stoppen wir den Webserver komplett, lassen den Server jedoch am Netz hängen. Das Skript liefert nun die Meldung, dass sich der Webserver nicht mehr erreichen lässt, der Zielrechner aber noch reagiert (Abbildung 7). Nehmen wir den Rechner auch noch vom Netz oder fahren ihn herunter, liefert das Skript die Fehlermeldung aus Abbildung 8.

Abbildung 7: Zwar lässt sich der Zielrechner im Netz erreichen, nicht jedoch der Webserver.

Abbildung 7: Zwar lässt sich der Zielrechner im Netz erreichen, nicht jedoch der Webserver.


Abbildung 8: Der angefragte Rechner lässt sich grundsätzlich nicht mehr erreichen.

Abbildung 8: Der angefragte Rechner lässt sich grundsätzlich nicht mehr erreichen.

Fazit

Lassen Sie Ihren Rechner surfen. Für gleichförmige Kontrollarbeiten eignen sich die gezeigten Browser allesamt. Steht Ihnen nur eine dünne Verbindung per Terminal zur Verfügung, etwa weil der X-Server streikt oder die Desktop-Umgebung nicht mehr laden möchte, dann sind Sie mit Links2 oder W3m nicht von der Außenwelt abgeschnitten. 

Der Autor

Harald Zisler beschäftigt sich seit den frühen 90er-Jahren mit FreeBSD und Linux. Zu Technik- und EDV-Themen verfasst er Zeitschriftenbeiträge und Bücher. Aktuell ist die vierte Auflage von “Computer-Netzwerke” beim Rheinwerk Verlag erschienen.

DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDF
LinuxUser 01/2018 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