Можно ли автоматизировать настройку общего хоста с помощью скрипта оболочки bash?

Можно ли автоматизировать настройку общего хоста с помощью скрипта оболочки bash?

Преамбула: Никогда раньше не создавал скрипт оболочки bash. Так что, во-первых, я даже не уверен, что это правильный инструмент для работы. Если нет, пожалуйста, прежде всего, дайте мне знать, что, по вашему мнению, является лучшей альтернативой.

Контекст: Я часто выполняю повторяющиеся задачи каждый раз, когда пытаюсь настроить веб-сайт. Я хочу автоматизировать эти задачи, запустив одну или две команды. ОБНОВЛЕНИЕ: Общий хост основан на Unix. Локальные машины — Mac OS X, поэтому также основаны на Unix.

В качестве примера приведу некоторые задания (команды), которые я часто выполняю:

SCP:

scp ~/local/path/general_web_app/.bash_profile [email protected]:/home/HOSTNAME/.bash_profile

scp ~/local/path/general_web_app/.gitconfig [email protected]:/home/HOSTNAME/.gitconfig

SSH напрямую:

ssh [email protected] 
cd /www/www/
git init
git add .
git commit -a -m "first commit"
cd ~/private/ && mkdir repos

ИЗМЕНИТЬ, НАЙТИ, ЗАМЕНИТЬ СОХРАНИТЬ И ВЫЙТИ:

pico ~/remote/private/repos/general_hub.git/hooks/post-update
replace "user" WITH "hostname";
hit "cmd x"
hit "y"

Насколько мне известно: Это разные задачи, которые я хочу, чтобы выполнял сценарий.

Вопрос 1: Может ли скрипт bash напрямую обрабатывать SCP, SSH и команды EDIT FIND REPLACE SAVE AND EXIT?

Вопрос 2: Некоторые параметры должны быть запрошены у пользователя, который запускает скрипт, и эти параметры должны быть помещены в некоторые файлы (заменив определенные ключевые слова, которые там существуют) — можно ли это сделать?

Вопрос 3: Должны ли мы копировать файлы на удаленный компьютер и редактировать их прямо на удаленном компьютере или же нам следует захватить файлы локально, «редактировать их локально во временном месте», а затем разместить их на сервере? Я предполагаю, что второй вариант гораздо сложнее.

Есть ли примеры, на которые я мог бы обратить внимание?

Заранее большое спасибо

решение1

Короткий ответ: да, на все.

Я приведу вам несколько примеров. Ниже приведен пример команды, которая выполняет локальный скрипт bash на удаленной машине: обратите внимание, что нет необходимости копировать его удаленно:

   ssh user@remote_pc 'bash -s' < local_file.sh

Это настолько просто, что, возможно, не стоит писать целый скрипт для его обработки, но если вы хотите сделать это, это можно организовать с помощью скрипта. Однако, чтобы это работало, вам придется настроить passwordless loginssh-соединения. Если вы этого не сделаете, команды ssh/scp в скрипте остановятся, ожидая ввода пароля удаленного пользователя.

Что касается редактирования и т. д., в Unix есть главный потоковый редактор sed, который делает именно это: например, команда

 sed 's/a/A/g' old_file.txt > new_file.txt

заменяет строчные буквы aна заглавные Aи помещает вывод в новый файл. Это тоже можно легко заскриптовать.

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

  echo $USER
  whoami

сделает это, даже из скрипта. То же самое для домашнего адреса, echo $HOMEи так далее.

Что касается вашего третьего вопроса, надеюсь, мой первый ответ дал ответ и на него: первая команда позволяет выполнить файл скрипта, который вы отредактировали локально, на удаленном сервере, даже не копируя его туда.

Добро пожаловать в мир *Nix, гдеВаше желание для меня закон.

Извините, я забыл: эта команда

  export -p | more

отобразит все локальные переменные, которые доступны везде (технически, которые были экспортировано).

Связанный контент