Como configurar o cliente ssh para executar comandos automaticamente ao conectar?

3

Eu freqüentemente me conecto a servidores através de um usuário que eu compartilho com outros colegas, toda vez que eu me conecto a cada servidor eu executo alguns comandos como bash , set -o vi , etc.

Eu gostaria de saber se existe uma maneira de dizer ao utilitário do cliente ssh para executá-los no servidor remoto antes de me entregar o controle.

Basicamente algo assim:

echo "bash; set -o vi; <DONT_EXIT>;" | ssh user@host

Alguma coisa construída no utilitário do cliente ssh? Quais são as soluções alternativas executadas do MEU lado? Estou ciente de soluções alternativas no lado do servidor, que não são o que estou procurando. Eu não consigo encontrar isso em lugar nenhum, então estou basicamente confirmando que isso realmente não pode ser feito.

Estou usando o Linux com o utilitário ssh OpenSSH padrão.

    
por AhHatem 20.11.2012 / 13:23

3 respostas

4

O parâmetro que eu estava procurando é: -t que forçaria o cliente ssh a alocar um terminal, então é assim:

ssh -t user@host "bash -o vi"

Isso me permitirá ativar automaticamente o modo vi ao conectar, mas executar mais comandos é mais complicado, pois se eu adicionasse mais comandos depois eles seriam executados após sair do bash e imediatamente sair de tudo, então todos os comandos devem ser executados antes dele .

    
por 29.01.2013 / 11:45
1

Você pode adicionar os comandos ao arquivo:

~/.bashrc

quando você faz o login, primeiro execute estes comandos, por último, dê-lhe o shell.

    
por 03.01.2013 / 18:20
0

Talvez terminar sua sequência de comandos com o seu shell com o qual você deseja interagir?

ssh user@host "bash -c 'set -o vi; bash'"

Eu testei isso e parece rodar os comandos iniciais e depois ser interativo, porém o stdout não está voltando corretamente. Espero que alguém possa apontar a solução para isso.

    
por 03.01.2013 / 18:28

Tags