從 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
tmux new-window -t sites:0 時總是會說 0 號已經被使用,請問有辦法處理掉嗎?
這個我也有遇到, 發現原文是從1開始的.
我是對於 0 就手動連接了~ 目前我也不知道怎麼處理耶.
瞭解了!感謝您!
另外請教一下, new-window 時可以帶入 shell command,
建立新的 pane 時,有辦法帶入 shell command 嗎?
順便推薦一份記錄:
http://wiki.wutianqi.com/software/tmux.html