X

Tmux 開啟後 自動 SSH 連結多台指定機器

從 Screen 轉用 Tmux 已經一段時間, 由此篇 "Tmux 教學 + Screen 到 Tmux 的無痛轉換" 看來, 已經使用2年以上了, 沒有覺得有什麼特別差異.

但是最近 Debian 升級後, 遇到一次 Tmux 版本不同造成無法 attach (類似 screen -r), 於是將 Tmux process 砍掉重新啟動, 才發現機器太多, 需要一邊回想、一邊猜、一邊從 ~/.ssh/known_hosts 撈, 所以來研究如何讓 Tmux 啟動時, 自動 SSH 連到所有機器的方法~

Tmux 開啟後, 自動 SSH 連結多台指定機器

此 script 的寫法可以知道除了執行 ssh 外, 可以執行任何指令, 可在自行發揮使用~

註: 參考自此篇: TMUX – The Terminal Multiplexer (Part2) | Hawk Host Blog

#!/bin/sh
tmux new-session -d -s TMUX_NAME

tmux new-window -t TMUX_NAME:0 -n 'SCREEN_NAME0' '/usr/bin/irssi'
tmux new-window -t TMUX_NAME:1 -n 'SCREEN_NAME1' 'ssh w1.example.com'
tmux new-window -t TMUX_NAME:2 -n 'SCREEN_NAME2' 'ssh w2.example.com'

tmux select-window -t TMUX_NAME:1
tmux -2 attach-session -t TMUX_NAME

範例

  • vim /usr/local/bin/tmux-ssh.sh # 下述 英文字全大寫 的 部份, 請自行換成自己想要取的名字
    #!/bin/bash
    tmux new-session -d -s sites
    
    tmux new-window -t sites:0 -n 'irc' '/usr/bin/irssi'
    tmux new-window -t sites:1 -n 'w1' 'ssh w1.example.com'
    tmux new-window -t sites:2 -n 'w2' 'ssh w2.example.com'
    
    tmux select-window -t sites:1
    tmux -2 attach-session -t sites

於 ssh 登入機器後, 想要自動進入 tmux attach 可以使用下述 Script. (這個會詢問 tmux ssh auto attach [y/n])

  • vim .bashrc # 加入於檔案最後面即可
    if [[ $SSH_CONNECTION != "" && $MY_SSH_CONNECTION != "yes" ]]; then
        while true; do
            echo -n "Do you want to attach to a tmux session? [y/n]"
            read yn
            case $yn in
                [Yy]* ) MY_SSH_CONNECTION="yes" tmux attach; break;;
                [Nn]* ) break;;
            * ) echo "Please answer y/n";;
            esac
        done
    fi
Tsung: 對新奇的事物都很有興趣, 喜歡簡單的東西, 過簡單的生活.
Related Post