автоматизация конфигурации CentOS 7 с использованием сценариев оболочки

Я замечаю, что я трачу много времени, используя учебные пособия для ручной настройки сервера CentOS 7. Как преобразовать шаги руководства из учебника в автоматический сценарий оболочки, который можно использовать для настройки нескольких серверов CentOS 7 с одинаковыми настройками?

Давайте используем этот учебник в качестве примера, но ответ должен быть обобщен для других сценариев оболочки config в дополнение к простому предоставлению рабочего сценария оболочки для автоматизации этого руководства.

Вот моя первая попытка скрипта оболочки:

#!/bin/bash yum update yum install yum-utils bzip2 bzip2-devel wget curl tar sudo yum install gcc-c++ cd /opt wget http://nodejs.org/dist/v0.12.7/node-v0.12.7.tar.gz tar zxf node-v0.12.7.tar.gz cd node-v0.12.7 ./configure --prefix=/usr/local make make install npm install bower -g npm install gulp -g 

Как правильно написать сценарий оболочки выше? И как я могу проверить, например, что каждый шаг выполняется правильно? Я должен быть root для запуска выше. Если я запускаю его как sudoer, как мне обрабатывать периодические запросы на пароли? Или тот факт, что он находится в сценарии оболочки, означает, что вам нужно только указать пароль sudoer при первом вызове скрипта?

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

Кроме того, это не относится к CentOS 7 с такими вещами, как yum install и т. Д.

2 Solutions collect form web for “автоматизация конфигурации CentOS 7 с использованием сценариев оболочки”

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

Либо запустите весь скрипт как root (напрямую), либо через sudo. Таким образом, вам не нужно запускать sudo в самом скрипте. Если вам требуется sudo для определенного шага, вам нужно либо установить свой ID с флагом NOPASSWD в sudoers, либо принять интерактивную подсказку для вашего пароля во время выполнения скрипта.

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

Например:

Короткие обозначения:

 yum update && \ yum install yum-utils bzip2 bzip2-devel wget curl tar 

Дольше руки:

 yum update RC=$? if [ $RC -ne 0 ] then print "Some error message here" exit 1 ## or some other identifying error code fi yum install yum-utils bzip2 bzip2-devel wget curl tar RC=$? if [ $RC -ne 0 ] then print "Some other error message here" exit 2 ## or some other identifying error code fi ... 

Поскольку вы упомянули, что это должен быть автоматический сценарий оболочки, по крайней мере для двух команд yum, которые вам нужно будет добавить -y поэтому yum примет ответ « да » по всем вопросам, которые он задает.

См. Страницу руководства yum , соответствующую выдержку:

  -y, --assumeyes Assume yes; assume that the answer to any question which would be asked is yes. Configuration Option: assumeyes 

Для получения более подробной информации об этом, включая некоторые важные рекомендации, на которые следует обратить внимание, см. Существующий вопрос: безопасно ли «yum -y install»?

  • Могу ли я переместить 0yum-cron из cron.daily в montly?
  • Перезапустить службу после обновления yum?
  • Регулярное выражение Yum или поиск по шаблону?
  • RepoForge, используемый во многих документах StackOverflow, недоступен. Какая альтернатива?
  • Избегайте обновления CentOS 7 через yum?
  • yum Поврежденный файл repomd.xml
  • Как получить emacs на недавно установленной системе Fedora 20?
  • localinstall from cdrom не может найти зависимости - RHEL 6.2
  • Существует ли карта имен пакетов в разных системах управления пакетами?
  • Как реплицировать установленный пакет из одного экземпляра Fedora в другой?
  • Yum прекратил работу после обновления
  • Interesting Posts

    Как я могу решить «Ваше соединение с 192. *. *. * Зашифровано с устаревшей криптографией»

    Как настроить linux для автоматического переключения между LAN и WLAN без использования сетевого менеджера

    Разрешить root для входа через ssh только с аутентификацией на основе ключа

    Есть что-то вроде «split ()» JavaScript в оболочке?

    обмен полями в столбцах по фиксированной схеме (да, нет, нет, да)

    Как показать, что означает псевдоним

    pwd без символических ссылок

    Как скрипт / программа выполняется в unix?

    Bash при поиске цикла и замене с помощью sed

    UTF-8 в Терминаторе

    rsync жалуется на символические ссылки

    Как вы поддерживаете сервисные службы systemd в режиме mosh?

    Почему файловая система ext4 может быть сжата только тогда, когда она не установлена?

    Как получить общие папки, работающие в Fedora 19 (guest) с помощью open-vm-tools?

    Звездочка: сделайте IVR, чтобы произносить цифры во время ввода пользователем

    Linux и Unix - лучшая ОС в мире.