当前位置: 代码迷 >> 综合 >> Tmux 开启后自动SSH 连结多台指定机器
  详细解决方案

Tmux 开启后自动SSH 连结多台指定机器

热度:24   发布时间:2023-12-12 02:57:39.0

从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_NAMEtmux 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 sitestmux 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" ]]; thenwhile true; doecho -n "??Do you want to attach to a tmux session? [y/n]"read yncase $yn in[Yy]* ) MY_SSH_CONNECTION="yes" tmux attach; break;;[Nn]* ) break;;* ) echo "Please answer y/n";;esacdone
    fi

原文网站: Tsung Hao