Запуск программы в сеансе экрана через SSH

Хорошо, есть несколько подобных тем, но я хочу запустить программу в сеансе экрана на удаленном компьютере.

Взяв на себя инициативу из этой темы

В надежде, что это правильно, я ввожу команду:

ssh  remote@192.168.1.5 "screen -S test -d -m roslaunch startup startup_node"

, которая не запускает новый экран сеанс "test" или запускает мой сценарий "roslaunch startup startup_node"

Я могу создать удаленный сеанс "test":

ssh  remote@192.168.1.5 "screen -S test -d -m"

Но как мне затем запустить в нем команду? Как команда screen -X используется с именованным экраном?

Я пытался, основываясь на , это :

 ssh remote@192.168.1.5 "screen -X stuff "roslaunch startup startup_node^M" "

, но опять же, похоже, это не запустить процесс удаленно. Обе команды работают, если вы уже ssh'd в удаленном.

Я также попытался написать скрипт startnav.sh на моей удаленной машине, который содержит screen -S nav -d -m roslaunch startup startup_node, и я запускаю его:

ssh remote@192.168.1.5 -t "./startnav.sh"

Это создает экземпляр экрана, однако он мертв, как в следующий вывод

    ~$ ssh swarmbot2@192.168.1.5 -t screen -r nav
     There is a screen on:
            4506.nav    (04/06/15 12:30:09) (Dead ???)
     Remove dead screens with 'screen -wipe'.
     There is no screen to be resumed matching nav.
     Connection to 192.168.1.5 closed.

Наконец, я следовал за вопросом здесь

и могу заставить выполнять обычные команды bash, только не «roslaunch startup startup_node»

, например

ssh -f remote@192.168.1.5  "screen -dm -S nav htop "

запустит сеанс htop на отдельном экране на удаленной машине. Флаг -f представляется важным. Но все равно не работает для roslaunch или скрипта, который содержит roslaunch, даже если он работает без ssh. Кроме того, для временной программы, такой как sleep 10, экран будет существовать только до тех пор, пока не завершится выполнение этого скрипта.

2
задан 23 May 2017 в 15:39

1 ответ

Как в заключительном примере в вопросе проблема не была с ssh, или экранная среда кроме нескольких ОПРЕДЕЛЕННЫХ ДЛЯ ROS переменных среды не были настроены. Это происходило из-за ~/.bashrc не быть названным на удаленных, которые настраивают их для меня.

, Как только я включал установку определенных переменных среды а именно,

source /ros/devel/setup.sh

, система работала правильно.

Файл startnav.sh Сценария:

#!/bin/bash

source ~/ros_ws/devel/setup.sh
roslaunch startup startup_node.launch

И вызов для загрузки файла сценария:

ssh remote@192.168.1.5 -f "screen -S nav -dm ./startnav.sh"
0
ответ дан 23 May 2017 в 15:39

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

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