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.