同时在多个活动 shell 中运行命令

同时在多个活动 shell 中运行命令

我使用 tmux 环境,经常需要在 4 个不同的窗格(图中的前 4 个)中使用相同的命令行参数运行相同的 python 脚本。有没有一种方法可以通过在一个 shell 上执行命令来在每个 shell 上执行脚本?

我知道这一点讨论但他们建议使用不同的终端环境,我正在寻找可以使用 tmux 或 shell 脚本完成的东西。

Tmux 会话

四个不同的 shell 是 4 个不同虚拟机的 ssh 会话。

答案1

不需要任何工具。tmux可以处理这个:

只需打开窗格,通过 ssh 连接到各个服务器,然后Ctrl-B接下来是

:setw synchronize-panes 

所有输入都会同步到所有可见窗格。
重新输入此命令或在命令中添加“off”以离开。

答案2

是的,这是可能的,使用名为 ttyecho 的工具可以模拟不同终端中的用户交互。

下载并安装:

wget http://www.resulinux.tk/utils/ttyecho.c -O ttyecho.c
gcc ttyecho.c -o /usr/bin/ttyecho

现在让我们在其他终端中执行一些操作,例如使用 xterm 作为用户 john 在 pts/17 处 loggeg,如 ps 命令中所示:

ps aux | grep john 
john   9198  0.0  0.0  23836  4524 pts/17   Ss   Jul21   0:00 /bin/bash

现在,让我们尝试打开 vi 并在另一个终端中输入一些文本。

ttyecho -n /dev/pts/17 vi (executed vi command on the other terminal) 
ttyecho  /dev/pts/17 i (entered in insertion mode)
ttyecho -n /dev/pts/17 some text  

当你查看 john 登录的终端时,你会看到 vi 确实被执行了,你可以看到我们在其中输入的文本“some text”。所以现在您可以完全控制其他终端会话。

在多个 ssh 会话中运行命令

确定 ssh pts 设备:

ps aux | grep ssh

root      3540  0.0  0.0  44924  5764 pts/1    S+   14:46   0:00 ssh [email protected]
root      5907  0.0  0.0  44924  5684 pts/17   S+   12:51   0:00 ssh [email protected]
root      8074  0.0  0.0  51216  3948 pts/6    S+   Jul26   0:01 ssh [email protected]

因此,要在登录 192.168.2.77 的 ssh 上执行命令,我只需要:

ttyecho -n /dev/pts/6 ls

并且 ls 命令将在单个脚本中真正远程执行!

答案3

clustersh 可能会让人感兴趣。

在此输入图像描述

也可以尝试 dsh。 https://www.linuxhelp.com/how-to-use-dsh-to-run-linux-commands-in-multiple-machines/

相关内容