MiniTipp: Zugriff auf den AIX-Desktop mit VNC
Inhalt
1. Einleitung
Das Common Desktop Environment ist die Arbeitsumgebung, die einmal der moderne, einheitliche Desktop für alle Unix-Varianten werden sollte. Bei AIX wird dieser Desktop immer noch als Standard mitgeliefert - doch arbeitet eigentlich noch jemand mit dem Common Desktop Environment?
Der Autor dieser Zeilen gesteht, dass er diesem Desktops nachwievor etwas abgewinnen kann. Da ich, wie wohl auch sonst kaum jemand, nicht direkt hinter einer AIX-Workstation sitze,
muss ich mir das geliebte CDE von meiner AIX-Station über VNC auf meinen Windows- oder Linux-Desktop holen. Wie das geht, davon soll dieser kleine Artikel handeln.
2. VNC installieren
Das Paket «vncserver-3.3.3r2-6.aix5.1.ppc.rpm» findet sich auf der Toolbox-CD für AIX. Es wird mit
# rpm -ihv vncserver-3.3.3r2-6.aix5.1.ppc.rpm
3. Desktop konfigurieren
Beim Start sucht der vncserver im Heimatverzeichnis des Benutzers im Verzeichnis .vnc die Datei xstartup. In dieser Datei werden die Programme zum Desktop-Start verankert. Für CDE könnte die Datei etwa so aussehen:
$ mkdir ~/.vnc $ vi ~/.vnc/xstartup #!/bin/sh export PATH=$PATH:/usr/dt/bin xrdb $HOME/.Xresources xsetroot -solid grey xterm -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" & DISPNUM=`echo $VNCDESKTOP | cut -d- -f3` export DISPLAY=localhost:$DISPNUM dtsession &
Im Beispiel wird ein xterm gestartet, die Hintergrundfarbe gesetzt, Pfad und Display-Variable gesetzt sowie die X-Defaults eingelesen. Mit der letzten Zeile wird dann schließlich der CDE-Desktop gestartet.
4. VNC starten
Der VNC-Server sollte nicht als root gestartet werden, sondern von dem Benutzer, der tatsächlich damit arbeiten möchte:
$ vncserver :1 -name Mein-VNC-Desk-1 -geometry 1456x864 -depth 15
Beim ersten Start fragt der VNC-Server nach einem Passwort. Das Passwort wird in der Datei ~/.vnc/passwd verschlüsselt gespeichert.
Soll der VNC-Server beim Systemstart automatisch gestartet werden, soll er natürlich auch unter dem richtigen Benutzer laufen. Dazu könnte man folgendes unter /etc/rc.d/init.d verankern:
# vi /etc/rc.d/init.d/vncserver
#!/bin/ksh
##################################################
# name: vncserver
# purpose: script that will start or stop 2 vnc instances
##################################################
export PATH=/usr/bin:/etc:/usr/sbin:/usr/ucb:/usr/dt/bin:/usr/bin/X11:/sbin:/usr/java14/jre/bin:/usr/java14/bin:/usr/vac/bin:/usr/local/bin
echo $(date):$1 >> /tmp/vncserver.log
case "$1" in
start)
echo /usr/bin/X11/vncserver :1 -name X-barney-1 -geometry 1456x864 -depth 15 >> /tmp/vncserver1.log 2>&1
su - barney -p -c /usr/bin/X11/vncserver :1 -name X-barney-1 -geometry 1456x864 -depth 15 >> /tmp/vncserver1.log 2>&1
sleep 3
echo /usr/bin/X11/vncserver :2 -name X-betty-2 -geometry 1600x1172 -depth 15 >> /tmp/vncserver2.log 2>&1
su - betty -p -c /usr/bin/X11/vncserver :2 -name X-betty-2 -geometry 1600x1172 -depth 15 >> /tmp/vncserver2.log 2>&1
;;
stop)
su - barney -p -c /usr/bin/X11/vncserver -kill :1 >> /tmp/vncserver1.log 2>&1
su - betty -p -c /usr/bin/X11/vncserver -kill :2 >> /tmp/vncserver1.log 2>&1
;;
*)
echo " Usage: $0 { start | stop }"
exit 1
;;
esac
Im Beispiel werden 2 VNC-Server unter zwei verschiedenen Benutzern (barney und betty) gestartet. Man beachte, dass der jeweilige VNC-Server auch nur vom richtigen Benutzer wieder beendet werden kann. Damit das Skript beim Systemstart auch ausgeführt wird, setzen wir Ausführungsrechte und verlinken es in den Standard-Runlevel von AIX:
# chmod +x /etc/rc.d/init.d/vncserver # cd /etc/rc.d/rc2.d # ln -s ../init.d/vncserver Svncserver
5. Mit dem VNC-Server verbinden
unter Windows:
Unter Windows kann man den VNC Viewer von RealVNC installieren. Die VNC-Server lauschen auf Port 5900+DISPLAY. In unserem Beispiel lauscht
Barneys VNC also auf dem Port 5901 und Bettys auf Port 5902. Dieser Port muss im VNC Viewer entsprechend angegeben werden (s. nebenstehende Abbildung).
unter Linux:
Unter Linux kann man z.B. tightvnc benutzen. Die Verbindung lässt sich dann bequem über die
Kommandozeile herstellen. Auch hier müssen natürlich die Ports 5901 bzw. 5902 angegeben werden.
Barney startet seinen Viewer mit
barney@tux$ vncviewer -depth 15 -noshared -user barney 111.11.11.11::5901 &
und Betty startet ihren mit
betty@tux$ vncviewer -depth 15 -noshared -user betty 111.11.11.11::5902 &
Diese Variante ist natürlich nicht auf Linux beschränkt, sondern funktioniert auch mit anderen Unices, sofern tightvnc installiert ist.