Как запустить приложение X из SSH [дубликат]

Я пытался поискать эту тему в гугле, но без каких-либо существенных результатов.

Мне нужно запустить какое-нибудь приложение с графическим интерфейсом из терминала, но мне все равно, что это приложение мне показывает. Кроме того, мне нужно запустить несколько экземпляров этого приложения в разных сеансах.Это связано с некоторыми автоматическими тестами графического интерфейса, поэтому я знаю, чего хочу, и ищу ответ :).

Я думаю, что правильные шаги должны быть такими:

  1. Инициировать новый сеанс X-окна
  2. Получить мой новый идентификатор сеанса
  3. экспортировать его в переменную env (экспорт DISPLAY: 13.0)
  4. запустить мое приложение

но я застрял на первом шаге. У кого-нибудь здесь была подобная проблема?

--- РЕДАКТИРОВАТЬ: 1) Меня не волнует вывод графического интерфейса - мне нужны только stdout и stderr из моего приложения. - поэтому этот вопрос не повторяется - хорошо знаю гугл :). Я не хочу перенаправлять вывод в свой собственный графический интерфейс.

19
задан 9 June 2015 в 09:27

3 ответа

Если Вы не хотите видеть то, что делает приложение, можно предоставить его "виртуальный" X-сервер с xvfb:

Xvfb обеспечивает X-сервер, который может работать на машинах без аппаратных средств дисплея и никаких физических устройств ввода данных. Это эмулирует немой кадровый буфер с помощью виртуальной памяти. Основное использование этого сервера было предназначено, чтобы быть тестированием сервера, но другое новое использование для него было найдено, включая тестирование клиентов против необычных глубин и экранных конфигураций, выполнение пакетной обработки с Xvfb как фоновый механизм визуализации, тестирование загрузки, как помощь портированию X-сервера на новую платформу и обеспечения незаметного способа запустить приложения, которые не действительно нужны в X-сервере, но настаивают на том, чтобы иметь тот так или иначе.

После установки его, можно запустить его с:

sudo Xvfb :10 -ac -screen 0 1024x768x24 &

это будет работать в фоновом режиме, тогда Вы запускаете свои клиенты с:

DISPLAY=:10 your-client
0
ответ дан 9 June 2015 в 09:27

Короткая команда:

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.
<час>
  1. Проверка /etc/ssh/sshd_config на стороне сервера:

    sudo nano /etc/ssh/sshd_config
    

    для строк ниже:

    X11Forwarding yes
    X11UseLocalhost no
    

    Перезапуск ssh сервер, если Вы внесли изменения:

    sudo service ssh restart
    
  2. Проверка /etc/ssh/ssh_config на стороне клиента:

    sudo nano /etc/ssh/ssh_config
    

    для строк ниже

    ForwardX11 yes
    ForwardX11Trusted yes
    
0
ответ дан 9 June 2015 в 09:27

Просто необходимо выполнить ДИСПЛЕЙ экспорта =:id# на ssh сессии, и запущенные программы будут работать на удаленном дисплее. Быстрый пример:

maythux@maythuxPC:~$ ssh testSSH@myServer
maythux@maythuxPC:~$ export DISPLAY=:0
maythux@maythuxPC:~$ gedit

Теперь gedit будет работать на названном дисплее testSSH пользователя

, можно сократить это все вниз в единственную команду:

ssh testSSH@myServer "DISPLAY=:0 nohup gedit"
0
ответ дан 9 June 2015 в 09:27

Другие вопросы по тегам:

Похожие вопросы: