Linux rdesktop

Материал из support.qbpro.ru

Rdesktop

  • Создадим модифицированную русскую раскладку клавиатуры:
touch /usr/share/rdesktop/keymaps/rus_mod
  • И заполняем этот файл:
editor  /usr/share/rdesktop/keymaps/rus_mod

вот этим содержанием:

include modifiers
#
# Arrow keys
#
Left 0xcb localstate
Up 0xc8 localstate
Down 0xd0 localstate
Right 0xcd localstate

#
# Numpad
#
Num_Lock 0x45
KP_Divide 0xb5 localstate
KP_Multiply 0x37 localstate
KP_Subtract 0x4a localstate
KP_Add 0x4e localstate
KP_Enter 0x9c localstate
KP_Decimal 0x53 numlock
KP_Separator 0x53 numlock
KP_Delete 0x53
KP_0 0x52 numlock
KP_Insert 0x52 localstate
KP_1 0x4f numlock
KP_End 0x4f localstate
KP_2 0x50 numlock
KP_Down 0x50 localstate
KP_3 0x51 numlock
KP_Next 0x51 localstate
KP_4 0x4b numlock
KP_Left 0x4b localstate
KP_5 0x4c numlock
KP_Begin 0x4c localstate
KP_6 0x4d numlock
KP_Right 0x4d localstate
KP_7 0x47 numlock
KP_Home 0x47 localstate
KP_8 0x48 numlock
KP_Up 0x48 localstate
KP_9 0x49 numlock
KP_Prior 0x49 localstate
  

#
# Esc and Function keys
#
Escape 0x1 localstate
F1 0x3b localstate
F2 0x3c localstate
F3 0x3d localstate
F4 0x3e localstate
F5 0x3f localstate
F6 0x40 localstate
F7 0x41 localstate
F8 0x42 localstate
F9 0x43 localstate
F10 0x44 localstate
F11 0x57 localstate
F12 0x58 localstate


#
# Insert - PgDown
#
Insert 0xd2 localstate
Delete 0xd3 localstate
Home 0xc7 localstate
End 0xcf localstate
Page_Up 0xc9 localstate
Page_Down 0xd1 localstate
# generated from XKB map ru - patch 
include common
map 0x419
grave 0x29
asciitilde 0x29 shift
asciicircum 0x07 shift
backslash 0x2b
bar 0x2b shift
apostrophe 0x28
greater 0x34 shift
less 0x33 shift


  • Строка для правильного подключения удаленного рабочего стола- скрипт bash:
#!/bin/bash
rdesktop -f -u username -k rus_mod -p passw -r printer:hplj1018 -N -b 10.10.10.1
  • пример параметров:
-T "Winxp"
-a 16
-k en-gb
-g 1024x768
-x l
-n TC
-r usbrdr
-r sound:local=alsa
-r disk:usb=/media
-r printer:LP1= "EpsonLQ2180"
-r lptport:LPT1=/dev/bus/usb/004/002
10.11.10.5:3389

имя принтера смотреть на пользовательской машине в

/etc/cups/printer.conf

* ! Внимание, для правильной печати через rdesktop необходимо установить CUPS-BSD...

FreeRDP примеры подключения

решил сделать для себя пометку. Может кому ещё пригодится.

Во всех примерах будут использоваться:

   разрешение экрана = 16 bit
   разрешение экрана = 1024×768

, а также переменные:

   user_linux — имя пользователя в Linux
   user_windows — имя пользователя на сервере терминалов в Windows
   domen — имя вашего домена
   10.10.10.10 - ip-адрес сервера

Подключаем общий буфер обмена:

xfreerdp -a 16 -u user_windows -d domen -g 1024x768 --plugin cliprdr 10.10.10.10

Монтируем рабочий стол из linux в терминал windows:

xfreerdp -a 16 -u user_windows -d domen -g 1024x768 --plugin rdpdr --data disk:desktop:/home/user_linux/Рабочий\ стол/ -- 10.10.10.10

Подключаемся на порт отличный от стандартного (3398), например 7777:

xfreerdp -a 16 -u user_windows -d domen -g 1024x768 --plugin cliprdr 10.10.10.10:7777

или

xfreerdp -a 16 -u user_windows -d domen -g 1024x768 --plugin cliprdr -t 7777 10.10.10.10

Подключаем usb-flash на сервер терминалов:

xfreerdp -a 16 -u user_windows -d domen -g 1024x768 --plugin rdpdr --data disk:ufb-flash:/media -- 10.10.10.10

Пробрасываем звук с linux машины в терминал и обратно:

xfreerdp-a 16 -u user_windows -d domen -g 1024x768 --plugin rdpsnd --plugin drdynvc --data audin -- 10.10.10.10

Принтер в терминал:

xfreerdp-a 16 -u user_windows -d domen -g 1024x768 --plugin rdpdr --data printer:HP_LJ_1120 -- 10.10.10.10

Я пользуюсь следующими возможностями FreeRDP:

   разрешение экрана = 16 bit
   разрешение экрана = 1024×768
   буфер обмена
   проброс всех принтеров
   по-умолчанию английская раскладка
   Отключенное TLS шифрование
   Пробрасываем в терминал рабочий стол и usb-флешки в виде подключенных дисков

Вот пример:

xfreerdp -a 16 -u user_windows -d domen -g 1024x768 -z --ignore-certificate -k 0x00000409  --plugin rdpdr --data disk:desktop:/home/xaxatyxa/Рабочий\ стол/ disk:usf-flash:/media/ printer -- --plugin cliprdr --plugin drdynvc --data audin -- --no-tls 10.10.10.10

В ходе экспериментов родился скрипт:

#!/bin/bash
mkdir /home/user/Рабочий\ стол/obmen/
lastlogin=$(cat ~/login.txt)
userlogin=$(zenity --entry --text='Введите Ваш логин:' --entry-text=$lastlogin --title='ВНИМАНИЕ')
echo $userlogin > ~/login.txt
userpass=$(zenity --entry --text='Введите Ваш пароль:' --hide-text --title='ВНИМАНИЕ')
serverip=$(zenity --list --radiolist --title "ВНИМАНИЕ" --text "Выберите рабочий сервер\n\t тыркните точку и нажмите ОК" --column ""  --column "" --column "список серверов" TRUE "192.168.15.8" "office" FALSE "192.168.15.9" "analit" FALSE "192.168.15.4" "model" FALSE "192.168.15.113" "Buhgalter" --height 250 --hide-column 2)
if "$serverip" == "192.168.15.4" ; then
xfreerdp -u $userlogin -p $userpass --ignore-certificate -d vnt -a 32 -g 1400x1055 --plugin rdpsnd --plugin drdynvc --data audin -- --no-tls $serverip
else
zenity --question --text=${userlogin}',запускаем в полном экране?' --title='РЕЖИМ РАБОТЫ ТЕРМИНАЛА'
 if [ $? -eq 0 ]; then
     xfreerdp -f -u $userlogin -p $userpass --ignore-certificate -d 'vnt' -a 16 --plugin rdpdr --data disk:user:/home/user/Рабочий\ стол/obmen/ --plugin rdpsnd --plugin drdynvc --data audin -- --no-tls $serverip
  else
     X_RES=$(xrandr | sed -n 's/.\{0,\}current \([0-9]\{1,\}\) x [0-9]\{1,\}.\{0,\}/\1/g;p;q')
     Y_RES=$(xrandr | sed -n 's/.\{0,\}current [0-9]\{1,\} x \([0-9]\{1,\}\).\{0,\}/\1/g;p;q')
    let "X_RES -= 10"
    let "Y_RES -= 30"
  xfreerdp -u $userlogin -p $userpass --ignore-certificate -d vnt -a 32 -g ${X_RES}x${Y_RES} --plugin rdpdr --data disk:user:/home/user/Рабочий\ стол/obmen/ --plugin rdpsnd --plugin drdynvc --data audin -- --no-tls $serverip
  fi
fi

ИСТОЧНИК: