Как запустить приложение X из SSH
Я пытался найти эту тему в Google, но без каких-либо существенных результатов.
Мне нужно запустить приложение с графическим интерфейсом из терминала, но мне все равно, что это приложение показывает мне. Кроме того, мне нужно запустить несколько экземпляров этого приложения в разных сеансах. Это связано с некоторыми автоматизированными тестами с графическим интерфейсом, поэтому я знаю, чего хочу, и ищу ответ:).
Я думаю, что надлежащие шаги должны быть:
- Начать новый сеанс X Window
- Получить мой новый идентификатор сессии
- экспортировать его в переменную env (экспорт DISPLAY:13.0)
- запустить мое приложение
но я застрял на первом этапе. у кого-нибудь здесь была подобная проблема?
--- РЕДАКТИРОВАТЬ: 1) Меня не волнует вывод графического интерфейса - мне нужны только stdout и stderr из моего приложения. - Вот почему этот вопрос не является дубликатом - хорошо знаю Google:). Я не хочу перенаправлять вывод в мой собственный графический интерфейс.
3 ответа
Если вы не хотите видеть, что делает приложение, вы можете предоставить ему "виртуальный" x-сервер с xvfb:
Xvfb предоставляет X-сервер, который может работать на компьютерах без аппаратного дисплея и физических устройств ввода. Он эмулирует тупой кадровый буфер с использованием виртуальной памяти. Основное использование этого сервера было предназначено для тестирования сервера, но были найдены другие новые способы его использования, в том числе тестирование клиентов на необычных глубинах и конфигурациях экрана, выполнение пакетной обработки с Xvfb в качестве механизма фонового рендеринга, нагрузочное тестирование в качестве помощи. портирование X-сервера на новую платформу и предоставление ненавязчивого способа запуска приложений, которые на самом деле не нуждаются в X-сервере, но в любом случае настаивают на его наличии.
После установки вы можете запустить его с:
sudo Xvfb :10 -ac -screen 0 1024x768x24 &
он будет работать в фоновом режиме, а затем вы начнете свои клиенты с:
DISPLAY=:10 your-client
Короткая команда:
ssh -X <username>@<host> gedit &
от man ssh
-X Enables X11 forwarding.
This can also be specified on a per-host basis in a configuration file.
X11 forwarding should be enabled with caution. Users with the
ability to bypass file permissions on the remote host (for the
user's X authorization database) can access the local X11
display through the forwarded connection. An attacker may then
be able to perform activities such as keystroke monitoring.
Проверьте
/etc/ssh/sshd_config
на стороне сервера:sudo nano /etc/ssh/sshd_config
для строк ниже:
X11Forwarding yes X11UseLocalhost no
Перезапустите ssh srever, если вы внесли изменения:
sudo service ssh restart
Проверьте
/etc/ssh/ssh_config
на стороне клиента:sudo nano /etc/ssh/ssh_config
для строк ниже
ForwardX11 yes ForwardX11Trusted yes
Вам просто нужно запустить экспорт DISPLAY=:id# в вашем сеансе SSH, и программы будут работать на удаленном дисплее. Быстрый пример:
maythux@maythuxPC:~$ ssh testSSH@myServer
maythux@maythuxPC:~$ export DISPLAY=:0
maythux@maythuxPC:~$ gedit
Сейчас gedit
будет работать на дисплее пользователя с именем testSSH
Вы можете сократить все это до одной команды:
ssh testSSH@myServer "DISPLAY=:0 nohup gedit"