Выполнение сценариев BASH на нескольких удаленных серверах
Last updated
Last updated
Любую команду, которую вы можете запустить из командной строки, можно использовать в сценарии bash. Скрипты используются для выполнения ряда команд. Bash доступен по умолчанию в операционных системах Linux и macOS.
Давайте представим гипотетический сценарий, в котором вам нужно выполнить сценарий BASH на нескольких удаленных серверах, но вы не хотите вручную копировать сценарий на каждый сервер, затем снова входить на каждый сервер по отдельности и только затем выполнять сценарий.
Конечно, вы можете использовать такой инструмент, как Ansible, но давайте научимся делать это с помощью Bash!
В этом примере я буду использовать 3 удаленных сервера Ubuntu, развернутых в DigitalOcean. Если у вас еще нет учетной записи Digital Ocean, вы можете зарегистрироваться в DigitalOcean и получить бесплатный кредит в размере 100 долларов США по этой реферальной ссылке здесь:
Как только ваша учетная запись Digital Ocean будет готова, разверните 3 дроплета.
Я пошел дальше и создал 3 сервера Ubuntu:
Я помещу IP-адреса этих серверов в servers.txt
файл, который буду использовать для зацикливания с помощью нашего сценария Bash.
Если вы новичок в DigitalOcean, вы можете выполнить действия по созданию капли здесь:
Вы также можете выполнить шаги из этого видео здесь, чтобы выполнить первоначальную настройку сервера:
Или, что еще лучше, вы можете прочитать эту статью здесь о том, как автоматизировать первоначальную настройку сервера с помощью Bash:
Имея три новых сервера, мы можем сосредоточиться на запуске нашего сценария Bash на всех из них с помощью одной команды!
Я повторно использую демонстрационный сценарий из предыдущей главы с некоторыми небольшими изменениями. Он просто выполняет несколько проверок, таких как текущее использование памяти, текущее использование ЦП, количество TCP-соединений и версию ядра.
Теперь, когда у нас есть готовый сценарий и серверы и мы добавили эти серверы в наш файл server.txt, мы можем запустить следующую команду, чтобы просмотреть все серверы и выполнить сценарий удаленно, без необходимости копировать сценарий на каждый сервер и индивидуально подключаться к каждому серверу.
Этот цикл for проходит через каждый сервер в файле server.txt, а затем выполняет следующую команду для каждого элемента в списке:
Вы получите следующий результат:
Это очень простой пример того, как выполнить простой сценарий на нескольких серверах без необходимости копировать сценарий на каждый сервер и без необходимости обращаться к серверам по отдельности.
Конечно, вы можете запустить гораздо более сложный сценарий и на гораздо большем количестве серверов.
Скопируйте приведенный ниже код и добавьте его в файл с именем remote_check.sh
. Вы также можете получить сценарий .