1

Я работаю только в сеансе экрана на моем VPS, который работает все время. Когда я подключаюсь к этому серверу через ssh, я подключаю его с псевдонимом bash

alias screenr='screen -r -d'

Что я хочу:

Подключение к серверу и автоматическое подключение сеанса.

Что я пробовал:

Добавление screen -r в конец моего .bashrc приводит к появлению информационного сообщения с экрана, что я уже подключен к сеансу.

Есть идеи, или я просто пропустил параметр на странице руководства?

2 ответа2

3

Я использую следующее в моем .bash_profile:

# if not running screen, attached to a terminal and is myusername (not run through sudo)
if [ -z "${STY}" -a -t 0 -a X${USER} = Xmyusername ]; then
    # function to re/attach to screen
    reattach () {
        # if Agent Forwarding is active, set up a mechanism to update the socket
        if [ -n "${SSH_AUTH_SOCK}" ]; then
            ln -snf "${SSH_AUTH_SOCK}" "${HOME}/.ssh/agent-screen"
            SSH_AUTH_SOCK="${HOME}/.ssh/agent-screen" export SSH_AUTH_SOCK
        fi
        # replace the login shell with screen
        exec screen -A -D -RR ${1:+"$@"} ;
    }
    # remove any defunct sessions
    screen -wipe
    echo 'starting screen... (type Cntl-C to abort)'
    sleep 5 && reattach
fi

Это создает уникальный сеанс, к которому я присоединяюсь при входе в систему. Он ждет 5 секунд на случай, если я захочу просто снаряд. Измените имя пользователя myusername в первом предложении if .

3

Вместо вашего bashrc, попробуйте использовать ваш конфигурационный файл ssh (~/.ssh/config). Вы можете изменить его для запуска команды при входе в систему. Например:

Host some_alias
Hostname                your_vps.dyndns.org
Port                    22
User                    some_user
PermitLocalCommand      yes
LocalCommand            screen -dRR screen_session_name

Затем все, что вам нужно сделать, это ssh some_alias, и вы автоматически подключитесь к сеансу экрана с именем screen_session_name (или создадите его, если он не существует).

Изменить: Кстати, это идет на вашем локальном компьютере, а не на вашем сервере.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .