从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 (Part
2) | 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 Hao