Хранение рабочего каталога через ssh

У меня есть большое количество машин Linux, все из которых монтируют мой корневой каталог по NFS. Если бы я нахожусь в ~/foo/bar/baz, я хотел бы смочь к ssh к другой машине и автоматически начать использовать это в качестве моего рабочего каталога. Кажется, нет простого способа сделать это; я могу думать о некоторых hacky, но хотел бы проверить прежде, чем судить их.

6
задан 25.09.2009, 18:32

4 ответа

Проверьте SendEnv (в ssh_config) и AcceptEnv (в sshd_config). Вы смогли отправлять PWD; хотя в принимающем конце, просто получив PWD не будет достаточно, чтобы заставить новую оболочку запуститься в желаемом каталоге.

Таким образом, Вы могли сделать что-то как:

  1. поместить SendEnv SSH_PWD в Вашем ssh_config и AcceptEnv SSH_PWD в Вашем sshd_config.
  2. Добавьте следующее к своему .profile или .bash_profile:

:

alias ssh='env SSH_PWD="$PWD" /bin/ssh'
if [ -n "$SSH_PWD" ]; then
   cd "$SSH_PWD"
   unset SSH_PWD
fi
5
ответ дан 07.12.2019, 16:11

Как насчет этой функции удара (предполагающий, что удар действительно является Вашей оболочкой):

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

Вы могли затем сделать sshcd foobar к ssh к foobar измените каталог там и выполните удар.

1
ответ дан 07.12.2019, 16:11
  • 1
    Это даст Вам полную оболочку, хотя? Это выполнит Ваш .bash_profile или .bash_rc после входа в систему? – BrianH 25.09.2009, 20:26
  • 2
    Это делает в моих тестах. По крайней мере, мой .bashrc получен. – innaM 25.09.2009, 20:54
  • 3
    у меня нет поля Linux вокруг для тестирования на. Я протестировал на AIX/Unix, и он не работал (Вход в систему, и CD к dir работал, но затем я просто получил подсказку $, не мою обычную подсказку). – BrianH 25.09.2009, 21:13
  • 4
    Попытайтесь изменить "удар" для "избиения-l" затем. Я отредактирую свой ответ, потому что та опция не будет делать ничего плохого так или иначе. – innaM 25.09.2009, 21:20

Я не знаю, считают ли это "Hacky" или нет, но здесь является идеей:

Так как Ваш homedir совместно используется через все серверы, тот же профиль будет выполняться при входе в систему. У Вас мог быть свой .profile, делают что-то вроде этого внизу:

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

Затем исказите свою команду SSH для запущения скрипта, который поместит текущий dir в Ваш ~/.current_dir файл прежде, чем выполнить команду SSH, и удаляет ~/.current_dir файл однажды соединение SSH был закрыт.

Я не протестировал это, но это могла быть начальная точка.

Удачи!

0
ответ дан 07.12.2019, 16:11

Можно использовать следующее:

#!/bin/sh
set -eu
gnome-terminal -x ssh -t "$@" "cd $PWD && $SHELL -il"
0
ответ дан 07.12.2019, 16:11

Теги

Похожие вопросы