Как выполнить bash-скрипт с аргументами параллельно на всех удаленных серверах, если удаленный сервер входит в пару

Пожалуйста, сначала внимательно прочитайте проблему, а затем дайте решение...................

у нас есть 3 файла в каталоге

  1. myscript.sh (файл myscript.sh содержит много функций и запускает / останавливает все пары / одну пару из файла serverlist.txt, такие функции как

для функции start(): проверьте, является ли arg2 парой "все пары" или "один IP", затем запустите ее.

для функции stop(): проверьте, является ли arg2 парой all-pair или single-IP, затем остановите ее.

для функции rules(): проверьте, является ли arg3 новыми-правилами или такими же правилами, затем скопируйте его

для функции put_files(): она использует arg2 и проверяет, является ли arg2 парой "все пары" или "один IP"

like:  ./myscript.sh put_files all-pair
or ./myscript.sh put_files 192.168.20.13-192.168.20.21

2. файл deploy_function: файл deploymet_function извлекает IP-пару из файла server_list.txt в форме PAIR.

  1. server_list.txt

Например, server_list.txt содержит IP-пару в виде IP-пары (сервер C++ - сервер базы данных).

192.168.20.13-192.168.20.21
192.168.20.22-192.168.20.34 192.168.20.42-192.168.20.45

Основной синтаксис моего скрипта:

./myscript.sh arg1 arg2 arg3

где, arg1= начать или остановить или положить файлы

arg2= все пары или одна пара IP

arg3 = new-rules или same-rules

Мы выполняем наш сценарий следующими способами.....

./myscript.sh запуск всех пар новых правил ИЛИ

./myscript.sh начало 192.168.20.13-192.168.20.21 new-rules

./myscript.sh остановить все пары или

./myscript.sh stop 192.168.20.13-192.168.20.21

Проблема: На самом деле, он выполняется нормально, но требует больше времени для выполнения на всех IP-парах, потому что он выполняется последовательно. сначала он идет к 192.168.20.21, затем к 192.168.20.13, затем к 192.168.20.34 и 192.168.20.22....., когда он получает ошибку, он останавливается на этом сервере. и не выполнять дальше по остальной IP-паре.

Я хочу выполнить myscript на всех серверах параллельно, и если получаю ошибку, перечислите этот сервер и выполните furtur. так есть какое-то решение, где я могу выполнить тот же сценарий параллельно без изменений в MySQL. поэтому, пожалуйста, помогите мне найти правильный способ сделать это....

1 ответ

Вы можете попробовать использовать pdsh (Parallel Distributed Shell). Pdsh - это эффективный многопоточный клиент удаленной оболочки, который выполняет команды параллельно на нескольких удаленных хостах. Хотя он не обновлялся довольно долго, он все равно прекрасно работает, когда я запускаю скрипты на 700 машинах.

pdsh

Другие вопросы по тегам