Verifique algo em vários hosts remotos

Recentemente, tive que fazer uma alteração nos sinalizadores de linha de comando de um serviço de escalonamento automático. Quando implementei a mudança, ele criou 6 instâncias, então, em vez de manualmente ssh’ing em cada caixa para executar alguma combinação de ps e grep, encontrei uma solução melhor: pssh, lista de hosts inline e pgrep.

O resultado final foi:

pssh -P -O StrictHostKeyChecking=no $(service-hosts --az uk --env live --service that-service) pgrep -f Europe/London

Onde:

  • psshé o ssh paralelo
  • -P imprime a saída, neste caso o pid do processo encontrado
  • -O StrictHostKeyChecking=no desativa a verificação de impressão digital ssh, necessária porque essas são caixas novas em que eu nunca ssh’ed antes
  • service-hosts.. é minha maneira de obter os IPs das instâncias no grupo de escalonamento automático para os parâmetros especificados, que geram algo como -H 10.0.0.2 -H 10.0.0.3 ...
  • pgrep é grep para processos
  • -f corresponde a todo o comando, em vez de apenas seu nome
  • Europe/London é o que eu estava verificando;)