[LinuxFocus-icon]
LinuxFocus article number 222
http://linuxfocus.org

[Photo of the Author]
von Guido Socher (homepage)

Über den Autor:

Guido mag Linux nicht nur, weil es interessant ist, zu verstehen, wie Betriebssysteme arbeiten, sondern auch wegen der Menschen, die an der Entwicklung von Linux beteiligt sind.



Übersetzt ins Deutsche von:
Hermann J. Beckers <beckerst/at/lst-oneline.de>

Mittels X11 Anwendungen auf anderen Rechnern ausführen

[Illustration]

Zusammenfassung:

Viele Linux-Erstbenutzer/innen denken, dass die grafische Oberfläche unter Linux nur ein weiteres "Windows"-System ist, in dem man Anwendungen startet, die dann in eigenen Fenstern erscheinen. Einigen fällt auf, dass man verschiedene Oberflächen benutzen kann, aber das scheint es auch schon gewesen zu sein. Das Linux X-Window-System (X11) ist viel mehr als das! Es ist ein Netzwerk-fähiges Window-System. Wir werden sehen, welche neuen und mächtigen Möglichkeiten es bietet.

_________________ _________________ _________________

 

Das Display-Konzept

Jede grafische X-Window-Anwendung liest beim Start die Umgebungsvariable DISPLAY aus, um festzustellen, an welchen Computerbildschirm die Grafik-Daten geschickt werden sollen. Dies erlaubt es in Verbindung mit den Netzwerkfähigkeiten des X-Window-Systems, grafische Anwendungen auf entfernten Rechnern zu starten. Das heißt, Sie nutzen die CPU-Leistung einer Maschine, während Sie die Anwendung von einer anderen Maschine aus steuern. Das vollständige GUI (grafische Benutzungsoberfläche) wird auf der Maschine dargestellt, von der aus Sie die Anwendung benutzen. Sie bemerken nicht, dass Sie 2 Computer benutzen.
Die Netzwerkgeschwindigkeit hat natürlich einen Einfluß, aber eine normale 10 Mbit/s LAN-Verbindung ist mehr als genug.


[run in an application remote]

Warum sollten Sie das tun?
Es gibt viele Anwendungen dieser "Netzwerk-Grafikprogramme". Firmen benutzen sie, um Geräte fernzusteuern, die Tausende von Kilometern entfernt sind und Sie können die gleiche Anwendung zur Steuerung benutzen, als ob Sie direkt vor Ort wären.
Vielleicht haben Sie 2 Computer, eine schnelle 1 Ghz-Maschine und einen alten Pentium 133 Mhz. Sie können sich an der Geschwindigkeit Ihres neuen Rechners erfreuen, obwohl Sie nicht direkt davor sitzen. Vielleicht sitzt gerade Ihre Schwester vor dem schnellen Rechner und ist angemeldet. Das macht nichts, Sie profitieren trotzdem davon.
[display] Wie funktioniert das?
Alle X-Window-Anwendungen, mögen sie nun gimp, xterm, konqueror, netscape ... heissen, sind eigentlich Netzwerk-Clients, die sich mit einem Server, dem X-Server, verbinden. Aufgabe des X-Servers ist es, mit der Grafik-Hardware zu sprechen, die Bilder auf Ihrem Monitor zu zeichnen sowie die Maus- und Tastatur-Eingaben zu lesen. Die Clients (Ihre Programme wie gimp, netscape...) senden dem Server Anweisungen, wie er die Rahmen und Buttons zu zeichnen hat. Im Austausch erhalten sie vom Server die Maus- und Tastatur-Ereignisse übermittelt. Offensichtlich benötigen Sie eine Authentifizierung, weil sonst jedermann den Bildschirm von jedem anderen durcheinander bringen könnte. Es gibt zwei Programme zur Zugriffskontrolle:
- xhost: mittels dieses Programms können Sie jeder Benutzerin auf einer beliebigen Maschine erlauben, Grafikdaten auf Ihrem Monitor anzuzeigen. Beispiel: Sie sitzen vor einem Rechner namens philosophus. Um jedem Programm auf dem Rechner movietux Zugriff auf Ihr Display auf philosophus zu gestatten, würden Sie folgenden Befehl eingeben:

xhost +movietux
Dies muss in einer Shell auf philosophus eingegeben werden.


- xauth: Dies ist eine Cookie-basierende Authentifizierung und sehr viel mächtiger. Hier können Sie wirklich einzelnen Personen Zugriff gestatten. Es ist viel sicherer als xhost. Die Authentifizierung benutzt ein Cookie, das in der Datei .Xauthority im Startverzeichnis des Benutzers gespeichert wird. Wenn der entfernte Rechner ein gültiges Cookie in dieser Datei hat, wird Zugriff gewährt. Um das Cookie von der Maschine, vor der Sie sitzen (philosophus), auf den Rechner zu kopieren, auf dem Sie das Programm starten wollen (movietux), können Sie eine der beiden folgenden Methoden benutzen:

xauth extract - philosophus:0.0 | ssh movietux /usr/X11R6/bin/xauth merge
oder
scp ~/.Xauthority movietux:


Die Prozedur, die beim Start eines Programms (Client) abläuft, ist folgende:
  1. Der Client überprüft die DISPLAY-Umgebungsvariable, um den Server zu finden, andernfalls wird versucht, den Server auf diesem Rechner zu erreichen.
  2. Der Server überprüft, ob der Client berechtigt ist, "Bilder" an ihn zu senden. Wenn der Client autorisiert ist, dann zeichnet der Server das Bild auf den Monitor.
Die DISPLAY-Umgebungsvariable hat folgende Syntax:

bash:export DISPLAY=hostname:displaynumber.screennumber
tcsh:setenv DISPLAY hostname:displaynumber.screennumber

Ich werde hier nicht über die Display- und Bildschirm-Nummer sprechen. Dies ist normalerweise einfach 0:0. Ein Beispiel für die bash-Shell wäre:

export DISPLAY=philosophus:0.0

 

Eine Anwendung auf einem entfernten Rechner starten

Nach der ganzen Theorie nun ein praktisches Beispiel. Versuchen Sie es einfach. Wir sitzen wieder an dem Computer philosophus und möchten etwas von dem Rechner movietux starten.
  1. Erzählen Sie Ihrem X-Server, dass Clients von movietux berechtigt sind, Bilder auf Ihrem Bildschirm zu zeichnen:
    xhost +movietux
  2. Melden Sie sich am Rechner movietux an:
    slogin -l username movietux
  3. Nun sind Sie am Rechner movietux angemeldet und jeder Befehl, den Sie starten, wird auf movietux ausgeführt
  4. export DISPLAY=philosophus:0.0
  5. Starten Sie das Programm, z. B.
    netscape &
Falls movietux eine mächtige Maschine ist, werden Sie bemerken, dass die Wiedergabe von html-Seiten in Netscape um einiges schneller ist als wenn Sie Netscape auf Ihrem lokalen Rechner starten würden. Zur gleichen Zeit werden Sie unter Benutzungsgesichtspunkten kaum bemerken, dass dieser Netscape nicht lokal gestartet wurde, weil Sie ihn in der gleichen Weise mit Maus und Tastatur steuern.
Schöne Sache, nicht wahr?  

Wie Sie Ihr Display mitnehmen

Obwohl es sehr einfach ist, eine Anwendung entfernt auszuführen, ist immer noch eine zusätzliche Eingabe erforderlich, um die DISPLAY-Variable zu setzen. Es ist möglich, dies zu automatisieren:

Der LinuxFocus Redaktion schreiben
© Guido Socher
"some rights reserved" see linuxfocus.org/license/
http://www.LinuxFocus.org
Autoren und Übersetzer:
en --> -- : Guido Socher (homepage)
en --> de: Hermann J. Beckers <beckerst/at/lst-oneline.de>

2005-01-14, generated by lfparser_pdf version 2.51