Как выполнить команду каждый раз после ssh'ing с одного компьютера на другой? - PullRequest
7 голосов
/ 14 ноября 2008

Как выполнить команду каждый раз после ssh'ing с одного компьютера на другой?

* 1003 например *

ssh mymachine
stty erase ^H

Я бы предпочел, чтобы "stty erase ^ H" выполнялся каждый раз после завершения моего соединения ssh.

Эта команда не может просто войти в мой файл .zshrc. то есть для локальных сессий я не могу выполнить команду (она портит мои сочетания клавиш). Но мне нужно, чтобы он запускался для моих удаленных сессий.

Ответы [ 6 ]

12 голосов
/ 14 ноября 2008

Поместите команды в ~/.ssh/rc

7 голосов
/ 14 ноября 2008

Вы можете поместить что-то вроде этого в файл запуска вашей оболочки:

if [ -n "$SSH_CONNECTION" ]
then
  stty erase ^H
end

Тест -n определит, установлен ли SSH_CONNECTION, что происходит только при входе через SSH.

1 голос
/ 14 ноября 2008

Если вы входите в * nix-окно с оболочкой, почему бы не включить его в свой запуск оболочки?

.bashrc или .profile в большинстве случаев.

0 голосов
/ 10 декабря 2012

Ответ для нас, пользователей экрана / бёбу:

Решение geocar не будет работать, так как на экране появится сообщение «Необходимо подключиться к терминалу». (Вероятно, это связано с тем, что .ssh / rc обрабатывается до запуска оболочки . См. ПРОЦЕСС ВХОДА из man 8 sshd).

Решение Роберта здесь лучше, но поскольку screen и byobu открывают свой собственный экземпляр bash, нам нужно избегать бесконечной рекурсии. Итак, здесь настроена удобная для пользователя версия:

## RUN BYOBU IF SSH'D ##
## '''''''''''''''''' ##
# (but only if this is a login shell)

if shopt -q login_shell
then
    if [ -n "$SSH_CONNECTION" ]
    then
        byobu
        exit
    fi
fi

Обратите внимание, что я также добавил exit после byobu, поскольку IMO, если вы в первую очередь используете byobu, вы обычно не хотите ничего делать за ее пределами.

0 голосов
/ 14 ноября 2008

Попробуйте добавить команду ниже конца вашего ~ / .bashrc. Это должно быть завершено при выходе из системы. Вы хотите, чтобы эта команда только выполнялась при выходе из сеанса SSH? А как насчет локальных сессий и т.д?

trap 'stty erase ^H; exit 0' 0

Возможно, вы также можете установить файл .logout из / etc / profile, используя этот же шаблон.

0 голосов
/ 14 ноября 2008

Предполагая цель Linux, поместите ее в .profile

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...