SSH - Execute um comando, depois me dê um shell

4

Esta questão me lembrou de uma das minhas. Eu quero criar um alias que vai ssh para uma máquina, executa um comando (neste caso, cd para um caminho fornecido) e, em seguida, me dá um shell. Eu corri centenas de variações disso:

$ ssh user@machine 'cd /some/path/ && bash -i -l'

qual é o melhor que posso fazer. Ele me dá um prompt bash no diretório correto, mas sem controle de tarefa e sem a capacidade de usar as teclas de seta (e alguns outros atalhos). Existe uma maneira fácil de fazer isso?

Eu não posso fazer isso facilmente no final do meu bashrc ou perfil, porque o caminho que eu quero ir irá variar (vou passá-lo como um argumento para o alias) e, ocasionalmente, eu vou mesmo ssh para aquela máquina sem querer ir a lugar algum estranho - o diretório home é bom.

    
por Plutor 04.08.2011 / 16:28

4 respostas

12

Tente dar ao ssh a opção -t para alocar um terminal.

    
por 04.08.2011 / 16:56
2

Veja a página man do sshd, seção Authorized_keys File format. Dentro dele tem a opção command="command" que é o que fazer quando a chave se conecta. O comando original incluído para a conexão está incluído em uma variável.

Você pode definir esse comando para executar o bash com um script de inicialização que verifica o valor do comando original e o executa, deixando-o em um shell interativo.

    
por 04.08.2011 / 17:24
1

Isso será diferente porque cd não é um comando, mas sim um shell embutido que altera o diretório de trabalho atual do programa.

Eu tenho medo de nunca ter encontrado uma boa maneira de fazer isso - mas talvez isso ajude a esclarecer alguma confusão.

    
por 04.08.2011 / 17:01
0

Acho que o melhor lugar para fazer o seu cd /some/path/ está no seu .bashrc na máquina remota.

    
por 04.08.2011 / 16:39

Tags