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
Предполагая, что тысячи (тысячи) хостов перечислены одна / строка в файле hosts.lst
, а затем из них за один раз выбирается группа (200), и на каждом из этих 200 хостов создается ваш runScript.sh
с использованием ssh
в пакетном режиме
и в то же время с сохранением stdout + stderr
извергается из каждого из этих фоновых заданий в файл с именем host
в каталоге $ logdir
, который может быть исследован по мере необходимости.
Наконец, мы ждем завершения одной группы перед запуском следующей группы с помощью команды wait
в конце внутреннего цикла for
.