Ok, existem alguns tópicos semelhantes a este, mas o que eu quero fazer é executar um programa em uma sessão de tela em um computador remoto.
Assumindo minha liderança em this thread
Na esperança de que esteja correto, estou inserindo o comando:
ssh [email protected] "screen -S test -d -m roslaunch startup startup_node"
que não inicia uma nova sessão de tela "test" ou executa meu script "roslaunch startup startup_node"
Eu posso criar um "teste" de sessão remota:
ssh [email protected] "screen -S test -d -m"
Mas como posso então executar um comando nele? Como o comando screen -X
é usado com uma tela nomeada?
Eu tentei, com base em this :
ssh [email protected] "screen -X stuff "roslaunch startup startup_node^M" "
mas, novamente, não parece iniciar o processo remotamente. Ambos os comandos funcionam se você já estiver ssh'd no controle remoto.
Eu também tentei escrever um script startnav.sh na minha máquina remota que contém screen -S nav -d -m roslaunch startup startup_node
e eu corro:
ssh [email protected] -t "./startnav.sh"
Isso cria a instância da tela, no entanto, ela está inativa como na seguinte saída
~$ ssh [email protected] -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.
Por fim, acompanhei o pergunta aqui
e pode obter comandos bash normais para executar, mas não "startup_node de inicialização do roslaunch"
por exemplo
ssh -f [email protected] "screen -dm -S nav htop "
iniciará uma sessão htop em uma tela separada em uma máquina remota. O sinalizador -f
parece ser importante. Mas ainda não funciona para um roslaunch ou um script que contenha roslaunch, mesmo que funcione se for executado sem ssh. Além disso, para um programa temporal como sleep 10
, a tela só existirá até que o script seja concluído em execução.