Hallo,
Zielsetzung war, bei einer DVS-Sitzung mit Windows XP, die lokale Serielle Schnittstelle eines Thin Client innerhalb der VM zur Verfügung zu stellen. Dies ist zwar geglückt, aber leider bin ich dabei auf ein Problem gestossen.
Nach dem Start des Thin-Clients sind dort die Berechtigungen für /dev/ttyS0 nicht ausreichend.
Dafür habe ich im UDM am Rechner-Objekt des Thin Clients folgende UCR-Variable angelegt:
startup/ttyS0 mit dem Wert chmod o+rw /dev/ttyS0
Zusätzlich müsste beim Start von rdesktop noch folgendes Parameter mitgegeben werden:
-r comport:COM1=ttyS0
Das ist dann aber leider nicht per UCR Variable möglich, da die UCR Variable rdp/redirect scheinbar vom univention-dvs-sessionbroker-client Skript, welches rdesktop startet, ignoriert wird. Dies geschieht auch mit anderen im TCS-Handbuch angegebenen rdp Variablen.
Deshalb habe ich die Datei /var/lib/univention-client-root/usr/bin/univention-dvs-sessionbroker-client angepasst und um cmd += [’-r’, ‘comport:COM1=/dev/ttyS0’] erweitert, was natürlich nach einem Update des Skriptes von Univention wieder weg sein wird.
def connect_rdp_command_linux(response_dict, options):
"""Connect to VM using Remote Desktop Protocol."""
## connect to desktop_host
cmd = ['rdesktop', '-a', '16']
if options.username:
cmd += ['-u', options.username]
if options.password:
cmd += ['-p', options.password]
XkbLayout = baseConfig.get('xorg/keyboard/options/XkbLayout')
if XkbLayout:
p = subprocess.Popen(['univention-keyboardmapping', '--xtordp', XkbLayout], stdout=subprocess.PIPE)
stdout, stderr = p.communicate()
rdpKeyboard = stdout.strip()
if rdpKeyboard:
cmd += ['-k', rdpKeyboard]
if response_dict.get('univentionDVSRdpUSBDevices') == '1':
cmd += ['-r', 'disk:USB=/var/run/drives/']
if response_dict.get('univentionDVSRdpSmartcard') == '1':
cmd += ['-r', 'scard']
if response_dict.get('univentionDVSRdpPrinter') == '1':
cmd += ['-r', 'lptport:LPT2=/dev/usb/lp0,LPT3=/dev/lp0']
if response_dict.get('univentionDVSRdpSound') == '1':
cmd += ['-r', 'sound:local']
################## edit uf - 14.05.2012
cmd += ['-r', 'comport:COM1=/dev/ttyS0']
################## edit ende
cmd += ['-r', 'clientname="Thinclient"']
if options.fullscreen:
cmd += ['-f', ]
cmd += ['-n', "%(hostname)s" % baseConfig, ]
windowsDomain = response_dict.get('univentionDVSWindowsDomain')
if windowsDomain:
cmd += ['-d', windowsDomain]
cmd.append(response_dict['desktop_host'])
if options.debug:
import shlex
cmd = shlex.split(options.debug) + cmd
return cmd
Es wäre praktisch, wenn die gesetzten rdp Variablen auch beim Starten einer DVS-Sitzung greifen würden.
Oder habe ich irgend etwas übersehen?
MfG
uf