Какое программное обеспечение мне следует использовать, если я хочу настроить терминальный сервер Linux VNC, который работает следующим образом:
Сервер VNC должен иметь возможность принимать до X одновременных подключений на одном и том же порту 5900. Сервер VNC должен использовать 640x480 для 8- или 16-битного цвета.
Когда сервер VNC получает соединение, он должен начать новый «сеанс» для пользователя и автоматически запустить определенное приложение Linux для этого пользователя. Если приложение было убито, аварийно завершено или каким-либо образом завершилось, пользователь должен быть отключен (выгнан) от сервера. Если пользователь отключается, приложение должно быть убито "изящным способом", что позволяет приложению очиститься.
(Не должно быть возможности "забрать" старую сессию)
Любые идеи?
Короткий ответ: вы не можете сделать это с помощью VNC. Каждый TCP-порт будет привязан к уникальному сеансу. Насколько мне известно, у вас будет такая же головоломка с Xpra, VNC, NX и т. Д. (Переход через сервер, например freenx, и подключение через ssh - это обходной путь, но не идеальный!) Возможно, вы сможете обойти это решение. для этого нужно написать приложение с простым балансировщиком нагрузки, но для этого все равно потребуется один порт для каждого клиента.
По остальному вопросу: размеры указаны с -экран. Если просто запустить Xvnc с этими параметрами, должно работать что-то вроде этого:
Xvnc -screen 640x480x8 :100
Сеанс Xvnc и запуск приложения: я бы поместил все это в скрипт и запустил его из xinet.d
Сложная часть - предотвратить повторное подключение пользователей к существующему сеансу. Это необычное требование, так как это одна из фундаментальных особенностей VNC. Возможно, вы сможете обойтись без синтаксического анализа вывода процесса Xvnc и его уничтожения (с помощью приложения), когда вы увидите событие отключения. Чтобы убить Xvnc при завершении работы приложения, просто подождите, пока приложение завершится в вашем скрипте, и убейте Xvnc, если он все еще работает в этот момент.
Вам лучше пойти с NX. Он похож на vnc, но оптимизирован, поэтому на вашем экране он работает намного быстрее и плавнее. Также проще подготовить профили для ваших пользователей.
вы можете настроить NX таким образом, чтобы он не разрешал пользователям повторно подключаться к уже открытым сеансам с помощью:
DISABLE_PERSISTENT_SESSION
в файле /etc/nxserver/node.conf.
Вы также можете указать команду, запускаемую при входе в систему, в конфигурации клиента NX. Вероятно, вы можете сделать это в конфигурации сервера, но я никогда не копал так далеко. В любом случае я настоятельно рекомендую вам взглянуть на NX. Он доступен в дополнительном репозитории centos и в других основных дистрибутивах Linux. Он основан на работе коммерческого продукта с частично открытым исходным кодом. www.nomachine.com