Переподключение к сеансу SSH

В настройках SSH поставил «не завершать сеанс при разрыве». После переподключения не знаю как присовокупиться к висящему сеансу.

В инете рекомендуют использовать screen, который позволяет использовать несколько псевдотерминалов и подключаться к ним по мере необходимости.
http://libc6.blogspot.com/2008/09/screen-terminal.html

Попробую использовать его вместо bash, как оболочку по умолчанию для ssh-сеансов.

Как настроить автоматический запуск screen при входе по ssh

Достало постоянно вводить screen -dR при входе на удалённую машину. Погуглив нашёл простое решение. В конце ~/.bashrc дописать:

 if [ -z "$STY" ]; then
 exec screen -dR
 fi

У меня чуть более продвинутый вариант 🙂

В конец .bashrc надо добавить

if [ "$SSH_TTY" ]; then
 if [ ! "$STY" ]; then
  CHOICE=`SCREEN/choose`
  if [ -z "$CHOICE" ];
  then
   exec screen
  else
   exec screen -dr $CHOICE
  fi
 fi
fi

и создать файл ~/SCREEN/choose:

#!/bin/bash
USERNAME=`whoami`
i=0
declare -ax SCREENS
SOCKETS=`find /var/run/screen/S-$USERNAME -type p`
if [ -z "$SOCKETS" ];
then
exit 0
fi
for S in $SOCKETS
do
((i=$i+1))
S=`basename $S`
SCREENS[$i]=`screen -ls | grep $S | perl -e '$s=<>; $s =~ s/^\\t(.*)\s/$1/; $s =~ s/\s/_/g; print $s'`
done
MENU=""
for ((j=1; j do
MENU="$MENU $j ${SCREENS[$j]}"
done
WHICH=`dialog --stdout --menu Select: 0 0 0 $MENU`
echo ${SCREENS[$WHICH]} | sed -e 's/_(.*)$//'

При логине будет предлагаться меню со списком имеющихся сессий screen, можно выбрать нужную либо создать новую. Если запущенных screen’ов нет, автоматически запустится новая сессия.

Единственная (вроде бы) зависимость — нужно поставить dialog.

Ссылки:
http://www.truediamon.ru/content/kak-nastroit-avtomaticheskij-zapusk-screen-pri-vhode-po-ssh

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *