Создание тонкого клиента для работы с терминальным сервером windows (RDP) на дистрибутиве ALT Linux
1. Берем любой легковесный дистрибутив АЛЬта, можно simple, можно серверный, устанавливаем, настраиваем сеть, настраиваем apt, обновляемся до бранча, я на данный момент использую p5, ставим xorg, если еще не стоит.
2. ставим следующие пакеты:
# apt-get install agetty rdesktop SysVinit-usermode
# apt-get install dialog (наверняка уже стоит, но мало ли)
3. Пишем маленькую программку на Си, компилим, обозвав ее autol
int main() { execlp( "login", "login", "-f", "terminal", 0);}Бинарик для пользователя terminal прилагаю сейчас. Копируем его в /usr/bin
само собой делаем исполняемым.
4. правим /etc/inittab
грузимся в init 3 по умолчанию
id:3:initdefault:и для первой консоли пишем
1:2345:respawn:/sbin/agetty -n -l /usr/bin/autol 38400 tty15. Создаем пользователя
# useradd terminal# passwd какой-то парольВот. теперь пользователь terminal будет автоматически логиниться в систему на 3-м уровне.
6. в .bash_profile пользователя добавляем строки
export DISPLAY=:0./terminalexitт.е. установить переменную DISPLAY, запустить скрипт terminal и после завершения скрипта выйти (но он опять зайдет т.к. настроен автологин ;-))
И так сам скрипт terminal
#!/bin/shaddr=`cat ts.addr`user=`cat ts.user`echo "Connect to '$addr' ..."#/usr/bin/X &#sleep 2 #эта задержка нужна на некоторых видео драйверах, возможно будет работать #и без паузы.#/usr/bin/rdesktop -f -z -E -u $user $addr#killall X#sleep 2/usr/bin/xinit /usr/bin/xfreerdp -f -u $user $addr #теперь я делаю так
clearDIALOG=${DIALOG=dialog}tempfile=`mktemp 2>/dev/null` || tempfile=/tmp/test$trap "rm -f $tempfile" 0 1 2 5 15$DIALOG --clear --title "TERMINAL CLIENT" \--menu "" 10 40 2 \"Connect to Terminal Server" "" \"PowerOff" "" 2> $tempfileretval=$?choice=`cat $tempfile`case $retval in0)if [ "$choice" == "Connect to Terminal Server" ];then{exit;}fiif [ "$choice" == "PowerOff" ];then{/usr/bin/poweroff}fiif [ "$choice" == "SetUp" ];then{$DIALOG --title "SetUp Terminal Server" --clear \--inputbox "Input Terminal Server Address" 8 51 2> ts.addr$DIALOG --title "SetUp Username" --clear \--inputbox "Input default user name" 8 51 2> ts.user}fi;;1)echo "Отказ от ввода."exit;;;255)echo "Нажата клавиша ESC."exit;;;esacв домашнюю папку пользователя следует положить еще два файла, один это ts.addr где прописывается адрес терминального сервера, другой ts.user, где прописывается имя пользователя, которое будет использовано при входе в сервер терминалов.
После загрузки осуществляется попытка подключиться к серверу, после отключения от него или при неудачной попытке откроется меню с двумя пунктами, 1-й это подключиться к серверу, 2-й выключить компьютер.
Для красоты стоит настроить bootsplash с логотипом своей компании, это описано тут: bootsplash
Загрузка по сети пока не рассматривается.
Устраняем проблемы с некоторыми клавишами в rdesktop
Правим /usr/share/rdesktop/keymaps/en-us
include commonmap 0x409asciicircum 0x07 shiftapostrophe 0x28grave 0x29asciitilde 0x29 shiftbar 0x2b shiftless 0x33 shiftgreater 0x34 shiftДобавления от 14.03.2011
1. rdesktop уже устарел, поэтому лучше использовать xfreerdp, в нем нет проблем с кодировками с залипанием клавиши alt и проблем с 2008-м сервером.
2. Запуск в скрипте лучше переделать через xinit, так отрабатывает быстрее
В общем скрипт изменен.