Можно ли написать сценарий оболочки, который будет вводить данные, затем s sh на сервер и запускать сценарии на моем локальном компьютере? - PullRequest
0 голосов
/ 04 марта 2020

У меня есть несколько сценариев на моей локальной машине. Эти сценарии запускают команды установки и настройки для настройки моих узлов Elasticsearch. У меня 15 прибывающих узлов, и мы определенно не хотим делать это вручную.

Пока давайте назовем их Script_A, Script_B, Script_ C и Script_D.

Script_A будет один для инициации процедур, в настоящее время он содержит:

#!/bin/bash

read -p "Enter the hostname of the remote machine: " hostname
echo "Now connecting to $hostname!"

ssh root@$hostname

Это прекрасно работает, очевидно, и я могу попасть на любой сервер, который мне нужен. Моя путаница заключается в удаленном запуске других сценариев. Я прочитал несколько других статей / SO вопросов, но я просто не понимаю методологию.

У меня будет каталог на моей машине следующим образом:

Elasticsearch_Installation
|
|=> Scripts
    |
    |=> Script_A, Script_B, etc..

Могу ли я запустить Script_A , который удаленно подключается к серверу, затем возвращается в мой локальный компьютер и запускает Script_B и т. д. на удаленном сервере, не перемещая файлы поверх?

Пожалуйста, дайте мне знать, если что-то из этого нужно прояснить, я ' я довольно новичок в среде Linux в целом ... и тем более не выполняет удаленную установку из сценариев по сети.

Ответы [ 3 ]

2 голосов
/ 04 марта 2020

Да, вы можете. Используйте s sh в неинтерактивном режиме, это будет похоже на запуск команды в вашей локальной среде.

ssh root@$hostname /remote/path/to/script

Ничто не изменится в вашей локальной системе, вы будете в той же точке, где вы запустили команда s sh.

NB: эта команда спросит вас пароль, если вы хотите действительно неинтерактивный поток, настройте хост без пароля, как описано здесь Как с sh на локальный хост без пароля?

1 голос
/ 04 марта 2020

У вас большая проблема, чем просто настройка множества узлов: вам также нужно заботиться о текущем обслуживании и администрировании всех этих узлов. Это пространство, в котором работают системы управления конфигурациями, такие как Puppet, Ansible и другие. Но у них есть кривая обучения, которую нужно преодолеть, и они требуют определенной инфраструктуры. Вы, вероятно, выиграете от одного из них в среднесрочной и долгосрочной перспективе, но если ваши новые узлы появятся на следующей неделе (i sh), то вам, вероятно, понадобится решение, которое вы можете использовать немедленно, чтобы начать работу.

Конечно, вы можете s sh на сервер, чтобы запускать там команды, в том числе неинтерактивно.

Моя путаница заключается в удаленном запуске других сценариев.

Конечно, если вы хотите запускать свои собственные сценарии на удаленной машине, то они должны присутствовать там, в первую очередь. Но это не главная проблема, потому что если у вас ssh, то у вас также есть scp, программа безопасного копирования. Он может копировать файлы на удаленный компьютер, примерно так:

#!/bin/bash

read -p "Enter the hostname of the remote machine: " hostname
echo "Now connecting to $hostname!"

scp Script_[ABCD] root@${hostname}:./
ssh root@hostname ./Script_A
0 голосов
/ 04 марта 2020

Я также управляю Elasticsearch кластерами с несколькими узлами. Хак, который работает для меня, использует Terminator Terminal Emulator и разделяет его на несколько окон / панелей, по одному для каждого узла ES. Затем вы можете транслировать команды, которые вы вводите в одном окне, на все windows.

Таким образом, вы запускаете команды и просматриваете их результаты почти интерактивно на всех узлах параллельно. Вы также можете сохранить этот макет windows в Терминаторе, а затем быстро получить это представление с помощью ярлыка.

PS, этот подход будет работать только если у вас есть только небольшое количество узлов и это тоже для только небольшие задачи. Единственное, что будет масштабироваться в зависимости от количества узлов, а также количества и разнообразия задач, которые вам нужно выполнить, вероятно, будет решение для управления конфигурацией, например Puppet или Salt .

Fabri c - еще один интересный проект, который может иметь отношение к вашему варианту использования.

...