Назад | Перейти на главную страницу

screen / autossh вопрос: самый простой способ прозрачно интегрировать screen в мой ssh?

Я немного новичок в screen и autossh:

Я просто хочу «полностью автоматизировать» свои сеансы ssh, сделать их неявно постоянными и автоматически восстанавливать их в случае разрыва соединения.

Я пробовал использовать экран напрямую, но обнаружил, что некоторые из его нажатий клавиш (например, ctrl + a) мешают моей оболочке - то есть они переопределяют функциональность оболочки / программы, используя одно и то же нажатие клавиши. Есть ли способ обойти это?

По правде говоря, я даже не хочу знать, что экран вообще работает. Я просто хочу "ssh" из окна терминала, чтобы это соединение сохранялось, если моя сеть умрет, ноутбук перейдет в спящий режим и т. Д.

Мое требование наивно? Я слишком упрощаю?

Я использую следующую настройку:

У меня есть псевдоним, который подключается по SSH к моему выбранному серверу, при необходимости запускает / повторно подключает экран. Я также переназначаю сочетание клавиш Ctrl-A на Ctrl-Z, потому что я использую его гораздо реже и его легко печатать.

alias myscreen='TERM=xterm ssh myserver -a -x -t /opt/local/bin/screen -xRR -A -e^Zz -U -O'

Затем я могу открыть терминал и ввести myscreen, и я подключусь к myserver. Я даже могу открыть несколько терминалов, введите myscreen несколько раз и подключите несколько терминалов к одному экрану. Я часто использую это, показывая один экранный терминал в одном окне, а другой - в другом.

Если вы хотите подключиться автоматически, вы можете сделать что-то вроде

$ while :; do myscreen; done

или даже

$ while :; do while ! ping -c1 -t1 myserver >/dev/null; do sleep 10; done; myscreen; echo Connection dropped at $(date); sleep 5; done

Обратите внимание, что все вышеперечисленное относится к OS X, подключающейся к Solaris, поэтому могут быть небольшие различия в синтаксисе ping и расположении экрана.

Еще одна вещь: вы можете немного настроить экран, мне особенно нравятся эти части моего .screenrc (на удаленной стороне):

# A nice status line at the bottom
hardstatus alwayslastline "%-w%{= BW}%50>%n %t%{-}%+w %<%=|%h"

# special xterm hardstatus: use the window title.
termcapinfo xterm 'hs:ts=\E]2;:fs=\007:ds=\E]2;screen\007'

# Do not use xterm's alternative window buffer, it breaks scrollback
termcapinfo xterm*|xs ti=\E7\E[?47l

Не уверен, что делает autossh. Я использую функцию bash для запуска ssh с экрана:

ga ()   {
host=$1
if [[ ${host} == "" ]]
    then
    echo "Provide hostname no to connect to."
else
    screen -S ${host} -t ${host} ssh -q -X -l ahumane ${host}
fi
}

Он устанавливает имя экрана для хоста ssh, чтобы вы могли увидеть его в "screen -ls"