Como SSH em um diretório específico?

33

Freqüentemente, faço login em um servidor e, em seguida, cd em um diretório específico. É possível simplificar esses dois comandos em um só?

ssh bob@foo  
cd /home/guest

Eu gostaria de evitar alterar qualquer coisa em 'foo' se possível, pois precisarei limpá-lo com o administrador do servidor. Eu uso bash, mas estou aberto a respostas em outras shells.

    
por spuder 16.08.2013 / 01:04

3 respostas

18

Basta colocar a última linha do seu arquivo ~ bob / .bash_profile no foo:

cd /home/guest >& /dev/null

Agora, toda vez que você efetuar login (seja por SSH ou de outra forma), o comando cd será executado. Não é necessário mexer com o ssh.

Eu sei que você escreveu que "gostaria de evitar mudar qualquer coisa em 'foo' se possível", mas se a conta de bob @ foo é sua, mudar seu próprio perfil de .bash deve ser aceitável, não?

    
por 16.08.2013 / 03:36
37

Isso funciona com o OpenSSH:

ssh -t bob@foo 'cd /home/guest && exec bash -l'

O último argumento é executado no seu shell de login. O -t flag passado para ssh forces ssh para alocar um pseudo-terminal, que é necessário para um shell interativo. O -l flag passado para bash começa como shell de login .

    
por 16.08.2013 / 01:17
13

Você também pode fazer isso da mesma forma, semelhante à solução do @ EvanTeitelman:

$ ssh -t bob@foo "cd /tmp ; bash"

Ou se você não conhece o shell do outro lado:

$ ssh -t bob@foo "cd /tmp && exec \$SHELL"

Ou assim:

$ ssh -t bob@foo 'cd /tmp && exec $SHELL'
    
por 16.08.2013 / 02:24

Tags