Execute o comando em vários shells ativos simultaneamente

6

Estou usando o ambiente tmux e, muitas vezes, tenho que executar o mesmo script python em 4 painéis diferentes (os 4 primeiros na imagem) com os mesmos argumentos de linha de comando. Existe uma maneira de executar o script em cada shell executando o comando em um?

Estou ciente disso discussão mas eles sugerem usar um ambiente de terminal diferente, estou procurando algo que pode ser feito usando o tmux ou scripts de shell.

Os quatro shells diferentes são sessões ssh para 4 VMs diferentes.

    
por Wajahat 27.07.2016 / 20:00

3 respostas

15

Não há necessidade de ferramentas. tmux pode lidar com isso:

apenas abra os painéis, ssh nos servidores individuais, e depois em Ctrl - B seguido por

:setw synchronize-panes 

e todas as entradas são sincronizadas em todos os painéis visíveis.
Digite novamente ou adicione "off" ao comando para sair.

    
por 06.12.2016 / 13:19
2

Sim, é possível, com uma ferramenta chamada ttyecho, que pode emular a interação do usuário em diferentes terminais.

Faça o download e instale:

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

Agora vamos executar algo em outro terminal, por exemplo, como usuário john que está loggeg em pts / 17 usando o xterm como você vê no comando ps:

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

Agora, vamos tentar abrir o vi e digitar algum texto no outro terminal.

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  

Quando você olha para o terminal onde o john está logado, você verá que o vi é realmente executado, e você pode ver o texto que digitamos nele "algum texto". Então agora você tem controle total sobre as outras sessões de terminal.

Execução de comandos em várias sessões ssh

Determine os dispositivos 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]

Então, para executar comandos no ssh logado em 192.168.2.77, eu só preciso:

ttyecho -n /dev/pts/6 ls

E o comando ls será executado remotamente no script único!

    
por 27.07.2016 / 20:25
1

clusterssh pode ser de interesse.

Tentetambémodsh. link

    
por 27.07.2016 / 23:31

Tags