Автоматический запуск 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