LINUX.ORG.RU
решено ФорумAdmin

tmux restore session ssh

 


0

1

Схема такая :

1)на моем рабочем пк запускается tmux, в нем все окна конектятся по ssh к серверам.

2)на серверах (к которым я приконектился через tmux) запускаю screen и много много окон внутри сессии скрина (т.е. если сервак не перезагружать то все сессии внутри скрина остаются)

3)под конец рабочего дня я делаю деатач и вырубаю комп.

Нужно чтобы когда я снова врубал рабочий комп и запускал на нем tmux, все сессии восстанавливались (нашел скрипт) и конектились снова сами по ssh, но скрипт этот не соединяет по ssh, а тупо сохраняет открытые окна.

Т.е. автоматическое соединение внутри tmux по ssh, а далее на сервере я приатачиваю screen.

Скрипт


#!/usr/bin/bash
# Save and restore the state of tmux sessions and windows.
#
# TODO: persist and restore the state & position of panes.
set -e

dump() {
  local d=$'\t'
  tmux list-windows -a -F "#S${d}#W${d}#{pane_current_path}"
}

save() {
  dump > ~/.tmux-session
}

terminal_size() {
  stty size 2>/dev/null | awk '{ printf "-x%d -y%d", $2, $1 }'
}

session_exists() {
  tmux has-session -t "$1" 2>/dev/null
}

add_window() {
  tmux new-window -d -t "$1:" -n "$2" -c "$3"
}

new_session() {
  cd "$3" &&
  tmux new-session -d -s "$1" -n "$2" $4
}

restore() {
  tmux start-server
  local count=0
  local dimensions="$(terminal_size)"

  while IFS=$'\t' read session_name window_name dir; do
    if [[ -d "$dir" && $window_name != "log" && $window_name != "man" ]]; then
      if session_exists "$session_name"; then
        add_window "$session_name" "$window_name" "$dir"
      else
        new_session "$session_name" "$window_name" "$dir" "$dimensions"
        count=$(( count + 1 ))
      fi
    fi
  done < ~/.tmux-session

  echo "restored $count sessions"
}

case "$1" in
save | restore )
  $1
  ;;
* )
  echo "valid commands: save, restore" >&2
  exit 1
esac

Ответ на: комментарий от overmind88

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

sanekmihailow
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.