gladilov.org.ru gladilov.org.ua

Автоматический запуск screen при входе по SSH

Для работы скрипта требуются установленные в системе пакеты dialog и screen.

Показать

В конец ~/.bashrc дописать:

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

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

Содержимое файла ~/SCREEN/choose:

#!/usr/bin/env bash
i=0
declare -ax SCREENS
SOCKETS=`find /var/run/screen/S-$(whoami) -type p 2>/dev/null`
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<=$i; j=$j+1)); do MENU="$MENU $j ${SCREENS[$j]}"; done
MENU="$MENU $j Отменить"
WHICH=`dialog --stdout --menu Select: 0 0 0 $MENU`
if [ "$WHICH" != "$j" ]; then echo ${SCREENS[$WHICH]} | sed -e 's/_(.*)$//'; fi

Популярное
Наверх