Executando um comando no host remoto com SSH interativo (condicionalmente)

8

Gostaria de poder executar automaticamente um comando em um host remoto sempre que eu fizer login nesse host, mas dentro da sessão SSH interativa atual.

Algo como

ssh user@remotehost [run do.sh]

onde do.sh realiza algumas tarefas de manutenção e, em seguida, reconecta-se a uma sessão screen (atualmente executo do.sh manualmente depois de fazer login no host).

Eu não quero adicioná-lo a .bashrc porque eu faço login neste host de outras máquinas e não quero que o do.sh seja executado quando eu fizer login a partir dele, então eu preciso que ele seja opcional. / p>     

por Jim Farkas 03.02.2012 / 10:38

2 respostas

13

Você pode tentar algo assim:

ssh server -t "do.sh; bash --login"

como sugerido aqui: link

Ou você pode tentar usar a opção 'LocalCommand' em sshd_conf (ou ~ / .ssh / config) conforme descrito na página de manual oficial: link

    
por 03.02.2012 / 11:37
3

Uma parte do quebra-cabeça: assumindo o OpenSSH, o cliente ssh definirá a seguinte variável de ambiente:

SSH_CONNECTION Identifies the client and server ends of the connection. The variable contains four space-separated values: client IP address, client port number, server IP address, and server port number.

Você pode usar essas informações para descobrir de onde vem sua conexão .

    
por 03.02.2012 / 11:35