среда, 17 октября 2018 г.

Тонкий клиент для старого железа и новых компьютеров

На нашей планете написано некоторое кол-во ПО, реализующего функции "тонкого клиента", как отделные программ, так и готовые образы для CD/FLASH/HDD. И у них, как и другого ПО есть свои сильные и слабые стороны. Некоторым для работы нужен TFTP для получения конфигурации, другим для получения полного образа ОС. Некотых нужно собирать самому в конфигураторе и использовать получившийся образ, другие продаются за деньги и для их эксплуатации нужен опытный админ, а иных нужно долго и нудно допиливать и не факт, что получится то, что подразумевалось.
У меня было что-то подобное. Головная организация внезапно решила запустить терминальную ферму на новейшей версии MS Windows задействовав, ко всему прочему, безопасность, как ее понимает MS, по максимуму. Текущее, еще вполне рабочее оборудование, приказало долго жить. В конечном итоге, высокие договаривающиеся стороны пришли к компромисному решению, и это решение было практически отличным.
Но пока суть да дело, у низшего звена, стоящего на иерархической лестнице чуть выше тети Маши уборщицы, возникла мысль собрать что-то простое, работающиее практически на всем, что может загрузится с USB, без дополнительных серверов, сложных подготовительных операций и всего такого прочего, работающего как в домашней обстановке, так и в корпоративной среде, имеющего возможность обновления не зависимо от даты выпуска.

Тех. условия:
Загрузка с USB;
Простота действий для подключения к терминальному серверу;
Получения данных о терминальных серверах из файла на флэшке или по сети с FTP/HTTP;
Минимальное кол-во обращений для записи на флэшку во время работы;
Неизменность конфигурации при действиях пользователя;
Отсутствие боязни проподания электроэнергии.
Прокидывание локальных дисков в терминальную сессию;
Общий буфер обмена для нескольких сессий;

После некоторых проб и ошибок в качестве ОС была выбрана Linux tinycore - минималистическая ОС, вполне подходившая под наши запросы.
Было написано некоторое кол-во скриптов, осуществляющих создание рабочей среды во время загрузки и проведены полевые испытания.

В конечном итоге получился двоичный образ, который можно залить на флэшку (размер от 1ГБ) любой утилитой, для этого предназначенной - dd, rufus, Win32DiskImager и т.д., загрузится и радоваться жизни.

Немного подробностей:
Флэшка на FAT32 (конф. файлы могут модифицироваться под Windows). На ней есть каталог tce/CONFIG с небольшим кол-вом конф. файлов.
А именно:
- zip архив rdc.zip с информацией о терминальных серверах и параметрах подключения (файлы в архиве являются выполняемыми скриптами, осуществляющими выбор сервера пользователем и подключение к нему, поэтому все параметры сразу видны и если потребуется, вдруг, смена клиента RDP можно просто установить клиента и изменить под него скрипт) . Этот же zip архив может быть получен при загрузке с FTP/HTTP (если указать его в качестве источника в файле source вместо фразы local).
- файл-флаг ssh для загрузки sshd при старте.
- файл-флаг vnc для загрузки vnc при старте.
- файл-флаг log для записи лога старта.
- файл-флаг sendemail для отсылки письма на некоторый  адрес с информацией о параметрах загрузившейся ОС - ip address и т.д.

При загрузке корневая система монтируется в RAM, а приложения пользователя монтируются к корню как отдельные FS в режиме "только чтение". Т.о. при перезагрузке все то, что было изменено пользователем теряется и ОС загружается чистой и шелковистой (для применения изменения необходимо запустить скрипт с правами рута).

Интерфейс пользователя минималистичен:

Пункт "ScreenShot send" создает скриншот и отсылает его и доп. информацию на адрес, указанный в конф. файле sendemail. Остальные пункты интуитивно понятны.

Интерфейс подключения к терминальным серверам:


Учетные данные:
ssh: root/tc-tiny
vnc: vnc3?

Сохранить изменения: /opt/1Create_backup.sh, при этом будет создана резервная копия текущего и прошлого состояния.

Образ лежит здесь.