Назад | Перейти на главную страницу

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

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

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

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

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

для функции stop (): она проверяет, является ли arg2 парой или парой с одним 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. Файл deployment_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 = новые правила или те же правила

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

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

./myscript.sh начать 192.168.20.13-192.168.20.21 новые правила

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

./myscript.sh остановить 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. Итак, есть ли какое-либо решение, в котором я могу выполнять один и тот же скрипт параллельно без изменений в myscript. поэтому, пожалуйста, помогите мне найти правильный способ сделать это ...

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

пдш