Como executar automaticamente um comando na janela de tela enquanto cria uma sessão de tela

0

Eu configurei meu .screen rc para criar 10 janelas enquanto criava uma sessão de tela como

 screen -t task1      0
 screen -t task2      1
 screen -t task3      2
 .
 .

O que eu quero é sempre que eu criar uma sessão de tela, cada janela deve ssh para uma máquina. Eu tentei várias coisas como

 screen -t task1      0 "ssh -p 22 [email protected]"

 screen -t task1      0 bash "ssh -p 22 [email protected]"

Mas parece que não está funcionando.

    
por MohitC 01.03.2016 / 11:35

1 resposta

2

Seu problema é a citação.

screen -t task1 1 "ssh foo@bar"
screen -t task2 2 bash "ssh foo@bar"

A primeira linha tentará executar um comando chamado " ssh foo@bar " em vez de dividi-lo em palavras; tente sem aspas.

A segunda linha instruirá o bash a executar um script chamado " ssh foo@bar " em vez de analisá-lo como um comando; que precisa do sinalizador -c :

screen -t task1 1 ssh foo@bar
screen -t task2 2 bash -c "ssh foo@bar"

Para testar exatamente o que está acontecendo, cole os comandos do screenrc em uma sessão interativa. Supondo que seu caractere de comando seja o padrão, tente ^a: para obter o equivalente a uma linha de comando de tela.

^a:screen -t task1 2 "ssh foo@bar"

.. deve fornecer a mensagem de erro% Cannot exec 'ssh foo@bar': No such file or directory

    
por 20.03.2016 / 23:30