- 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
- A lista de hosts pode ser fornecida por arquivo ou pela entrada padrão
- Exemplo:
pussh -f servers uname -a ou fetch-servers | pussh -f - uname -a
- 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
- É possível salvar a saída de cada host em arquivos separados (
%h representa o nome do host)
- Exemplo:
pussh -f servers -o %h-hw.txt lshw
- Também é possível enviar a saída do SSH para outro comando por pipe
- Exemplo:
pussh -f servers -o '|grep feature' command > output
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
-i e -o podem 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
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
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 🤣