加入收藏 | 设为首页 | 会员中心 | 我要投稿 宜春站长网 (https://www.0795zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 服务器 > 搭建环境 > Linux > 正文

如何在tmux上复制ssh会话

发布时间:2020-12-31 12:21:53 所属栏目:Linux 来源:网络整理
导读:我想再次复制我的ssh会话. 例如,我的窗口名称是“user @ host”.我希望按前缀键S在新窗口中执行’ssh user @ host’ $tmux bind S confirm-before "neww ssh #W" 尝试之后,它只发出一个没有’user @ host’选项的ssh命令 CentOS 7上的tmux版本为1.8. 解决方

我想再次复制我的ssh会话.

例如,我的窗口名称是“user @ host”.我希望按前缀键S在新窗口中执行’ssh user @ host’

$tmux bind S confirm-before "neww ssh #W"

尝试之后,它只发出一个没有’user @ host’选项的ssh命令
CentOS 7上的tmux版本为1.8.

解决方法

你可以试试这样的东西,虽然它有点难看.把它放到你的tmux.conf中:
bind S neww "$(ps -ao pid,tty,args | sort | awk '$1 ~ /#{pane_pid}/{VAR=$2} $2 ~ VAR && $3 ~ /ssh/{$1=""; $2=""; print}')"

说明

创建一个名为S的绑定,并使用该参数作为初始命令打开一个新窗口

bind S neww "..."

执行内部命令的输出

$(...)

列出所有进程的pid,tty和command(带参数)

ps -ao pid,args | ...

按pid排序

... | sort | ...

将输出输入awk

... | awk '...'

找到当前窗格/窗口的tty,并将其放在VAR中(#{}由tmux替换)

$1 ~ /#{pane_pid}/{VAR=$2}

查找具有我们之前找到的tty的进程并且具有以ssh开头的命令.请注意,我们假设ssh会话的pid大于调用它的shell.在大多数情况下应该如此.

$2 ~ VAR && $3 ~ /ssh/{...}

删除pid,然后打印剩余部分.这将是带有所有参数和选项的ssh命令.这是将在新窗口中执行的命令.

$1=""; $2=""; print

(编辑:宜春站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读