$DISPLAY Variable auf VM exportieren

el.com

Lieutenant
Registriert
Okt. 2008
Beiträge
765
Hallo Volk :)

folgendes Szenario:
Auf meinem Win XP Rechner (nennen wir ihn einfach mal 192.168.0.1) läuft eine Solaris 10 VM (192.168.0.2) mittels VMware Workstation. Es gibt einen weiteren Solaris-Server (192.168.0.3), der sich nur per SSH bedienen lässt.
Jetzt zeigt sich aber die Notwendigkeit, ein X11-Programm vom Server zu starten, was natürlich auf dem Server selbst nicht klappt, da kein Monitor daran angeschlossen ist. Ich habe nun versucht die Ausgabe des Programms mit der $DISPLAY Variable auf meine Solaris 10 VM umzulenken, was aber ums Verrecken nicht funktionieren will.

Zuerst setze ich auf der VM ein xhost +. Klappt auch soweit:
access control disabled, clients can connect from any host
Jetzt exportiere ich auf dem Server die $DISPLAY Variable wie folgt und prüfe obs geklappt hat:
export DISPLAY=192.168.0.2:0.0
echo $DISPLAY
192.168.0.2:0.0

Starte ich jetzt aber auf dem Server das X11-Programm, kommt es nur zu Fehlermeldungen, wie z.B. hier beim Start von printmgr:

Exception in thread "main" java.lang.InternalError: Can't connect to X11 window server using '192.168.0.2:0.0' as the value of the DISPLAY variable.
at sun.awt.X11GraphicsEnvironment.initDisplay(Native Method)
at sun.awt.X11GraphicsEnvironment.access$000(X11GraphicsEnvironment.java:53)
at sun.awt.X11GraphicsEnvironment$1.run(X11GraphicsEnvironment.java:142)
at java.security.AccessController.doPrivileged(Native Method)
at sun.awt.X11GraphicsEnvironment.<clinit>(X11GraphicsEnvironment.java:131)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:164)
at java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment(GraphicsEnvironment.java:68)
at sun.awt.motif.MToolkit.<clinit>(MToolkit.java:93)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:164)
at java.awt.Toolkit$2.run(Toolkit.java:821)
at java.security.AccessController.doPrivileged(Native Method)
at java.awt.Toolkit.getDefaultToolkit(Toolkit.java:804)
at javax.swing.UIManager.initialize(UIManager.java:1262)
at javax.swing.UIManager.maybeInitialize(UIManager.java:1245)
at javax.swing.UIManager.getUI(UIManager.java:851)
at javax.swing.text.JTextComponent.updateUI(JTextComponent.java:308)
at javax.swing.text.JTextComponent.<init>(JTextComponent.java:282)
at javax.swing.JTextField.<init>(JTextField.java:207)
at javax.swing.JTextField.<init>(JTextField.java:148)
at com.sun.admin.pm.client.pmTop.<clinit>(pmTop.java:1278)

Ich weiß nicht mehr weiter :(

Gruß,
el.com
 
Hi,

probier mal:

export DISPLAY=192.168.0.2:0

also ohne das .0

Gruß,

d2boxSteve
 
Örghs. Manchmal ist es leichter als man denkt. :freak:

Mit export DISPLAY=192.168.0.2:0 funktioniert es zwar auch nicht, aber ich habe ein funktionierendes Workaround gefunden:

Wenn ich mit ssh -X (anstatt nur ssh) auf den Server gehe, klappt es :)
 
Die "xhost +"-Variante funzt nicht, weil der X-Server auf .2 in Standardkonfiguration gar nicht am Netz lauscht um mit verbindungswilligen X-Clients zu reden. Der X-Server wird mit sowas wie "Xsun -nolisten tcp" gestartet und läßt dann nur lokale Zugriffe zu. "ssh -X" tunnelt den X-traffic über ssh und spricht dann lokal mit dem X-Server.

Wenn du wirklich mal X-Traffic direkt über Netz schicken willst (statt ihn per ssh zu tunneln, wie du es nun machst), mußt du das Startskript des X-Servers ändern um das "-nolisten tcp" zu entfernen. Dann funzt (nach xhost + bzw. xhost 192.168.0.3) auch das Umlenken per DISPLAY=192.168.0.2:0.

Die ssh-Variante ist in aller Regel die bessere.
 
Zurück
Oben