Я немного новичок в 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"