Pesquisa de site

DSH (Dancer's Shell) - Execute comandos em vários hosts Linux


Os administradores de sistemas estão bem cientes da importância de serem capazes de monitorar e administrar inúmeras máquinas em um curto espaço de tempo, de preferência com o mínimo de movimento físico. Quer se trate de um pequeno ambiente de nuvem ou de um grande cluster de servidores, a capacidade de gerenciar computadores centralmente é essencial.

Para conseguir isso parcialmente, vou mostrar como usar uma pequena ferramenta bacana chamada DSH (shell do dançarino/shell distribuído) que permite ao usuário executar comandos em várias máquinas.

O que é DSH?

DSH é a abreviação de 'Distributed Shell' ou 'Dancer's Shell', que é uma ferramenta disponível gratuitamente na maioria das principais distribuições do Linux, mas pode ser facilmente construído a partir de uma fonte se sua distribuição não o incluir em seu repositório de pacotes.

Instale DSH (Shell Distribuído) no Linux

Vamos assumir um ambiente Debian/Ubuntu para o escopo deste tutorial. Se você estiver usando outra distribuição, substitua os comandos apropriados pelo seu gerenciador de pacotes.

Em distribuições baseadas em Debian, você pode instalar o DSH usando o seguinte comando apt no terminal.

sudo apt install dsh

Em distribuições baseadas em RHEL, você precisa compilá-lo a partir de tar balls de origem, mas antes de fazer isso, certifique-se de compilar e instalar a biblioteca ‘libdshconfig’.

wget http://www.netfort.gr.jp/~dancer/software/downloads/libdshconfig-0.20.10.cvs.1.tar.gz
tar xfz libdshconfig*.tar.gz 
cd libdshconfig-*
./configure ; make
sudo make install

Em seguida, compile dsh e instale.

wget https://www.netfort.gr.jp/~dancer/software/downloads/dsh-0.22.0.tar.gz
tar xfz dsh-0.22.0.tar.gz
cd dsh-*
./configure ; make 
sudo make install

Como usar DSH no Linux

O arquivo de configuração principal “/etc/dsh/dsh.conf” (para Debian) e “/usr/local/etc/dsh.conf >” (para Red Hat) é bastante simples, mas como rsh é um protocolo não criptografado, usaremos SSH como shell remoto.

Usando o editor de texto de sua preferência, encontre esta linha:

remoteshell =rsh

e altere para:

remoteshell =ssh

Existem outras opções que você pode passar aqui, se desejar, e há muitas delas para encontrar na página de manual do dsh. Por enquanto, vamos aceitar os padrões e dar uma olhada no próximo arquivo, /etc/dsh/machines.list (para Debian).

Para sistemas baseados em Red Hat, você precisa criar um arquivo chamado “machines.list” em “/usr/local/etc/” diretório.

A sintaxe aqui é muito fácil. Tudo o que você precisa fazer é inserir as credenciais de uma máquina (nome do host, endereço IP ou FQDN), uma por linha.

Observação: Ao acessar mais de uma máquina simultaneamente, cabe a você configurar o SSH sem senha baseado em chave em todas as suas máquinas. Isso não apenas proporciona facilidade de acesso, mas também fortalece sua máquina em termos de segurança.

Meu arquivo “/etc/dsh/machines.list” ou “/usr/local/etc/machines.list” diz:

172.16.25.125
172.16.25.126

Depois de inserir as credenciais das máquinas que deseja acessar, vamos executar um comando simples como uptime para todas as máquinas.

dsh -aM -c uptime

Exemplo de resultado:

172.16.25.125: 05:11:58 up 40 days, 51 min, 0 users, load average: 0.00, 0.01, 0.05
172.16.25.126: 05:11:47 up 13 days, 38 min, 0 users, load average: 0.00, 0.01, 0.05

Então, o que o comando ‘dsh’ faz?

Bem simples. Primeiro, executamos dsh e passamos a opção “-a” para ele, que diz para enviar o comando “uptime” para “ >TODAS” das máquinas listadas em “/etc/dsh/machines.list“.

A seguir, especificamos a opção “-M”, que diz para retornar o “nome da máquina” (especificado em “/etc/dsh/machines.list<“) junto com a saída do comando uptime. (Muito útil para classificação ao executar um comando em várias máquinas).

A opção “-c” significa “comando a ser executado” neste caso, “tempo de atividade“.

DSH também pode ser configurado com grupos de máquinas no arquivo “/etc/dsh/groups/”, onde é um arquivo com uma lista de máquinas no mesmo formato que o arquivo “/etc/dsh/machines.list”. Ao executar dsh em um grupo, especifique o nome do grupo após a opção “-g”.

Para sistemas baseados em Red Hat, você precisa criar uma pasta chamada “grupos” no diretório “/usr/local/etc/”. Nesse diretório “groups” você cria um arquivo chamado “cluster“.

Por exemplo, execute o comando “w” em todas as máquinas listadas no arquivo de grupo “cluster” “/etc/dsh/groups/cluster ” ou “/usr/local/etc/groups/cluster“.

dsh -M -g cluster -c w

DSH oferece muito mais flexibilidade e este tutorial apenas arranha a superfície. Além de executar comandos, o DSH pode ser usado para transferir arquivos, instalar software, adicionar rotas e muito mais.

Para um Administrador de Sistemas encarregado da responsabilidade de uma grande rede, é inestimável.