Чтобы ограничить количество параллельных SSH-соединений, вы можете использовать xargs
следующим образом:
printf '%s\n' "${sshconfig[@]}" |
xargs -P 4 -I {} ssh "{}" "echo $COMMAND | base64 -d | bash"
Это запустит вашу команду не более чем в четырех параллельных экземплярах (, заданных-P 4
). Параметр -I {}
заставит xargs
заменить строку {}
в команде на строку, считанную со стандартного ввода. Стандартный ввод подключен к printf
, который просто печатает один элемент из списка sshconfig
за раз.
Вы можете протестировать это с различными -P
настройками, пока не найдете номер, который работает хорошо.
Если ваша оболочка входа на удаленных машинах — bash
, вы также можете рассмотреть
code=$( base64 -d <<<"$COMMAND" )
printf '%s\n' "${sshconfig[@]}" |
xargs -P 4 -I {} ssh "{}" "$code"