Mantendo o diretório de trabalho em todo o ssh

6

Eu tenho um grande número de máquinas Linux todas as quais montam meu diretório home sobre o NFS. Se eu estiver em ~ / foo / bar / baz eu gostaria de poder usar o ssh em outra máquina e começar a usá-lo automaticamente como meu diretório de trabalho. Não parece ser uma maneira fácil de fazer isso; Eu posso pensar em alguns hacky, mas gostaria de verificar antes de tentar.

    
por pjc50 25.09.2009 / 17:32

4 respostas

5

Confira SendEnv (em ssh_config ) e AcceptEnv (em sshd_config ). Você pode ser capaz de enviar o PWD; embora no final de recebimento, apenas obter o PWD não será suficiente para fazer o novo shell iniciar no diretório desejado.

Então você poderia fazer algo como:

  1. coloque SendEnv SSH_PWD no seu ssh_config e AcceptEnv SSH_PWD no seu sshd_config .
  2. Adicione o seguinte ao seu .profile ou .bash_profile:

:

alias ssh='env SSH_PWD="$PWD" /bin/ssh'
if [ -n "$SSH_PWD" ]; then
   cd "$SSH_PWD"
   unset SSH_PWD
fi
    
por 25.09.2009 / 18:46
1

Que tal esta função bash (assumindo que bash realmente é seu shell):

sshcd() {
    CWD='pwd'
    HOME_BASED=${CWD#$HOME}
    ssh -t $1 "cd ~$HOME_BASED;bash -l"
}

Você poderia então fazer sshcd foobar para ssh para foobar, mudar o diretório para lá e executar o bash.

    
por 25.09.2009 / 19:08
0

Eu não sei se isso é considerado "Hacky" ou não, mas aqui está uma ideia:

Como o seu homedir é compartilhado em todos os servidores, o mesmo perfil será executado no login. Você poderia ter seu .profile fazendo algo assim na parte inferior:

CURR_DIR=$(cat ~/.current_dir)
if [[ -n $CURR_DIR ]] && [[ -d $CURR_DIR ]]; then
  cd $CURR_DIR
fi

Em seguida, alias seu comando SSH para executar um script que colocará seu diretório atual em seu arquivo ~/.current_dir antes de executar o comando SSH e remova o arquivo ~/.current_dir assim que a conexão SSH for fechada.

Eu não testei isso, mas poderia ser um ponto de partida.

Boa sorte!

    
por 25.09.2009 / 18:43
0

Você pode usar o seguinte:

#!/bin/sh
set -eu
gnome-terminal -x ssh -t "$@" "cd $PWD && $SHELL -il"
    
por 07.07.2010 / 20:06

Tags