Há algum tempo, escrevemos um guia que descrevia como executar um único comando em vários sistemas remotos ao mesmo tempo usando PSSH em sistemas semelhantes a Unix. Hoje, vamos discutir sobre uma ferramenta similar chamada DSH . Define o shell distribuído (ou o shell do dançarino). Usando DSH, podemos executar um comando linux em vários hosts de cada vez. É um utilitário gratuito e de código aberto escrito usando a linguagem de programação C.

DSH – Execute um comando Linux em vários hosts de cada vez

Instale DSH

On Arch Linux e derivados:

O DSH está disponível no AUR, para que você possa instalá-lo usando auxiliares da AUR, como Yaourt ou Packer, conforme mostrado abaixo.

yaourt -S dsh

Ou,

packer -S dsh

No Debian, Ubuntu:

O DSH está disponível nos repositórios oficiais do Debian, Ubuntu e outros sistemas baseados em DEB, como Linux Mint, sistema operacional elementar. Para instalá-lo DSH em qualquer sistema baseado em DEB, execute:

sudo apt-get install dsh

Para outras distribuições do Linux, o DSH pode ser compilado e instalado manualmente conforme descrito abaixo.

DSH requer libdshconfig para funcionar.

Uma vez baixado, vá para o diretório onde você baixou os dois pacotes.

Primeiro compile e instale o libdshconfig usando os comandos:

tar xfz libdshconfig*.tar.gz
cd libdshconfig-*
./configure ; make
sudo make install

Em seguida, compile e instale dsh também.

tar xfz dsh*.tar.gz
cd dsh-*
./configure ; make
sudo make install

Configurar DSH

Nós instalamos dsh. Vamos agora configurar o DSH para executar comandos em vários hosts. Para fazer isso, primeiro edite o arquivo de configuração do DSH e defina o valor do shell remoto de rsh para o ssh.

No Arch Linux e derivadas, o arquivo de configuração padrão é /etc/kgname/dsh.conf .

Edite este arquivo:

 sudo vi /etc/kgname/dsh.conf

Altere o valor do controle remoto de rsh para ssh .

#default configuration file for dsh.
 # suppled as part of dancer's shell

verbose = 0

remoteshell =ssh
 showmachinenames = 0
waitshell=1 # whether to wait for execution

#remoteshellopt=...

# default config file end.

Em sistemas baseados em DEB:

$ sudo vi /etc/dsh/dsh.conf

remoteshell =ssh

Nos sistemas baseados em RPM:

$ sudo vi /usr/local/etc/dsh.conf

remoteshell =ssh

Em seguida, precisamos adicionar os hosts remotos onde queremos executar os comandos.

Para fazer isso, crie / edite o arquivo machines.list e adicione os hosts remotos.

On Arch Linux e derivados:

sudo vi /etc/kgname/machines.list

Adicione o IP ou o nome do host do host remoto um a um como mostrado abaixo.

192.168.43.100 
192.168.43.101

Em sistemas baseados em DEB:

$ sudo vi /etc/dsh/machines.list
192.168.43.100 
192.168.43.101

Nos sistemas baseados em RPM:

$ sudo vi /usr/local/etc/machines.list
192.168.43.100
192.168.43.101

Você pode adicionar qualquer número de hosts remotos no arquivo machines.list .

Usage (USO)

Depois de adicionar todos os hosts remotos e criar um usuário comum em todos os seus sistemas remotos, você pode executar o comando Linux em todos os hosts remotos ao mesmo tempo. Digamos, por exemplo, que o comando a seguir executará o comando uname -r em todos os hosts remotos ao mesmo tempo.

dsh -a -c uname -r

Ele solicitará que você insira o nome de usuário e a senha do host remoto respectivo. Se você não deseja inserir as credenciais do usuário cada vez que você executar este comando, basta configurar o login SSH sem senha .

Saída da amostra:

3.10.0-514.16.1.el7.x86_64
4.4.0-34-generic

Como você vê na saída acima, o utilitário dsh exibe a versão Kernel dos meus dois hosts remotos.

Para mais detalhes, consulte a página man.

man dsh

E, isso é tudo por agora pessoal. Espero que isto ajude. Se você achar úteis os nossos guias, aproveite um momento para compartilhá-los em suas redes sociais e profissionais. Vamos publicar guias mais úteis nos próximos dias. Continue visitando!

Felicidades!

Anúncios