pussh - ferramenta para execução paralela de comandos SSH
(github.com/bearstech)- Ferramenta de CLI que permite executar comandos simultaneamente em vários servidores por meio de sessões SSH paralelas
- Suporta desde uso simples até controle avançado de entrada/saída, sendo útil para administração de clusters de servidores
Recursos básicos
- Executa comandos em vários hosts e exibe a saída com o nome do host como prefixo
- Exemplo:
pussh -h host1,host2 uname -a
- Exemplo:
- A lista de hosts pode ser fornecida por arquivo ou pela entrada padrão
- Exemplo:
pussh -f servers uname -aoufetch-servers | pussh -f - uname -a
- Exemplo:
- A saída pode ser encadeada em pipelines para ordenação ou filtragem
- Exemplo: ordenar por uso de disco →
pussh -f servers df -h / | grep /dev | sort -rn -k5
- Exemplo: ordenar por uso de disco →
- É possível salvar a saída de cada host em arquivos separados (
%hrepresenta o nome do host)- Exemplo:
pussh -f servers -o %h-hw.txt lshw
- Exemplo:
- Também é possível enviar a saída do SSH para outro comando por pipe
- Exemplo:
pussh -f servers -o '|grep feature' command > output
- Exemplo:
Recursos de controle de entrada
- Ao executar comandos, a entrada pode ser fornecida por arquivo ou pela saída de outro comando
- Exemplo:
pussh -f servers -i file command - Exemplo: arquivo de entrada por host →
pussh -f servers -i %h.data command - Exemplo: entrada dinâmica →
pussh -f servers -i 'get-data %h|' command
- Exemplo:
-ie-opodem ser combinados livremente
Recursos de implantação e execução
- Permite transferir e executar remotamente comandos ou scripts
- Exemplo:
pussh -f servers -u my-deploy.sh args ... - No entanto, o executável deve ser self-contained ou compatível com o ambiente dos servidores de destino
- Exemplo:
Dicas de otimização de desempenho
- A velocidade de estabelecimento das conexões SSH tem grande impacto no tempo total de execução
- Se o limite de processamento do agente SSH for excedido, podem ocorrer falhas de autenticação ou erros de conexão
- Recomendação: definir uma taxa de execução (rate) ao usar a ferramenta (ex.:
alias pussh='pussh -r 50') - Como a latência de rede influencia muito, costuma ser mais rápido acessar por ssh uma máquina na LAN remota e executar o pussh a partir dela
- Benchmark de exemplo (com base em uma LAN Gigabit):
$ time pussh -f servers -r 100 date Total: 201 host(s), 4 second(s) real 0m4.069s user 0m7.132s sys 0m3.140s
- Benchmark de exemplo (com base em uma LAN Gigabit):
Desenvolvimento e histórico
- Ferramenta usada internamente pela Bearstech desde 2008
- No início era apenas algumas linhas de shell script e hoje opera de forma estável até mesmo em clusters com mais de 500 servidores
- Integrada a sistemas de gerenciamento de nuvem, ela gera listas de hosts executáveis a partir de descrições simples de hosts
Limitações
- O stdout e o stderr do servidor remoto não são separados e saem combinados em um único fluxo
- Não é possível obter o estado de saída (exit status) do comando executado no servidor remoto
2 comentários
O nome é suspeito!
Não poderia concordar mais 🤣