SSH para servidor, executar comando e manter conexão

12

Eu quero escrever um script que abra um terminal com guias diferentes, faça logon em um servidor usando ssh em cada guia e execute um comando em cada guia. Por exemplo: htop .

O script abaixo abre um terminal com 4 abas todas conectadas no servidor. Mas se eu tentar adicionar o comando htop na linha cmd= , isso não funcionará mais ...

#bin/bash

tab="--tab"
cmd="bash -c 'ssh user@host';bash"
foo=""

for i in 1 2 3 4; do
      foo+=($tab -e "$cmd")         
done

gnome-terminal "${foo[@]}"

exit 0

Eu tentei isso ...

cmd="bash -c 'ssh user@host htop';bash"

... porque o ssh --help diz que a sintaxe para ssh é:

  

uso: ssh [usuário @] hostname [comando]

    
por Red 10.07.2013 / 11:53

1 resposta

13

Na sua forma mais simples:

ssh -t user@host "command; bash"

-t é a parte crítica aqui. Isso força o host a alocar um terminal virtual para o processo, o que permite que ele permaneça aberto.

Se você quer apenas executar o htop em uma carga de servidores, você pode omitir o bash no final, mas isso significa que se você sair do htop, você retornará a um terminal local.

    
O
por Oli 10.07.2013 / 12:06