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.
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 |
|
ohne: Textmodus |
|
Treiber für Grafikmodus |
|
in der GUI nicht notwendig |
|
Webseite formatiert in Datei umleiten |
|
– |
|
Webseite unformatiert in Datei umleiten |
|
– |
|
Proxy angeben |
|
– |
|
abweichendes Download-Verzeichnis |
|
– |
|
Anonymisierter Modus |
|
kein Download, kein Auflisten von Dateien |
|
HTML-Frames rendern |
|
– |
|
Links nummerieren |
|
Links lassen sich über Zifferntasten schnell aufrufen |
|
Browser als Firefox ausgeben |
|
– |
|
Senden “Do-not-track” |
|
– |
|
Referer angeben |
|
0: kein Referer, 1: angeforderte URL als Referer, 2: frei definierter Referer, 3: realer Referer, 4: realer Referer nur am gleichen Server |
|
Angabe Referer |
|
– |
|
Angabe abweichender Browser |
|
– |
|
Zusatzangaben für HTTP-Header |
|
– |
|
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).
Ü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 |
|
|
nur IPv4-Adressen |
|
|
nur IPv6-Adressen |
|
|
Einsatz als Newsreader |
|
|
komplette Webseite auf Standardausgabe lenken |
|
|
nur Header auf Standardausgabe lenken |
|
|
Post-Methode mit Datei verwenden |
|
|
Start im interaktiven Modus |
|
|
Leerzeilen zusammenfassen |
|
|
weitere Optionen anzeigen |
|
|
weitere Option angeben |
|
|
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.
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.
Infos













