logdir='mktemp -d'
bunch=200
IFS=$'\n'
for hosts in $(< hosts.lst xargs -r -L "$bunch"); do
IFS=" ";
for host in $hosts; do
ssh -n -o BatchMode=yes "$host" './runScript.sh' 1>"$logdir/$host.log" 2>&1 &
done
wait
done
Supondo que os 100s de hosts estejam listados como uma / linha no arquivo hosts.lst
e, em seguida, um grupo seja selecionado em uma vez (200), e em cada um desses 200 hosts geraram runScript.sh
using ssh
em batch mode
e, ao mesmo tempo, preservando o stdout+stderr
de cada um desses trabalhos em segundo plano em um arquivo com o nome host
no diretório $logdir
, que pode ser examinado como e quando necessário. / p>
Finalmente, esperamos que um grupo termine antes de lançar o próximo grupo, por meio do comando wait
no final do loop for
interno.