Набор утилит dtools. Управляем множеством UNIX-систем::Журнал СА 6.2014
www.samag.ru
     
Поиск   
              
 www.samag.ru    Web  0 товаров , сумма 0 руб.
E-mail
Пароль  
 Запомнить меня
Регистрация | Забыли пароль?
Журнал "Системный администратор"
Журнал «БИТ»
Наука и технологии
Подписка
Где купить
Авторам
Рекламодателям
Магазин
Архив номеров
Вакансии
Контакты
   

  Опросы
1001 и 1 книга  
12.02.2021г.
Просмотров: 8525
Комментарии: 2
Коротко о корпусе. Как выбрать системный блок под конкретные задачи

 Читать далее...

11.02.2021г.
Просмотров: 8856
Комментарии: 3
Василий Севостьянов: «Как безболезненно перейти с одного продукта на другой»

 Читать далее...

20.12.2019г.
Просмотров: 16037
Комментарии: 0
Dr.Web: всё под контролем

 Читать далее...

04.12.2019г.
Просмотров: 15122
Комментарии: 13
Особенности сертификаций по этичному хакингу

 Читать далее...

28.05.2019г.
Просмотров: 16258
Комментарии: 6
Анализ вредоносных программ

 Читать далее...

Друзья сайта  

Форум системных администраторов  

sysadmins.ru

Вебинар «Укрощение SIEM-системы. Инструкция по применению для системных администраторов»

 Набор утилит dtools. Управляем множеством UNIX-систем

Архив номеров / 2014 / Выпуск №6 (139) / Набор утилит dtools. Управляем множеством UNIX-систем

Рубрика: Администрирование /  How To

Набор утилит dtools
Управляем множеством UNIX-систем

В подчинении сисадмина обычно находится не один, а несколько серверов. Давать команды каждому по отдельности неэффективно, на помощь приходят специализированные инструменты – Fabric, pyDSH, dtools и другие

Первые два основаны на Python и при необходимости вполне могут заменить более сложные инструменты; dtools (Distributed tools [1]) написан на bash и по идеологии и подходу ближе к классическому shell, а поэтому очень прост в понимании и использовании. При необходимости dtools легко расширяется. В репозиториях дистрибутивов Linux dtools обычно не встречается, но его установка проста.

$ sudo apt-get install git

$ git clone https://github.com/ajdiaz/dtools.git

$ cd dtools

$ sudo cp dt dthost dtstatus /usr/bin

$ sudo cp -r lib /usr/lib/dtools

$ sudo cp -r doc/man/ /usr/share/man/man1

Все операции выполняются с помощью bash скрипта dt, cинтаксис выглядит просто:

dt pattern command arguments

Шаблоны представляют собой фильтр-выборку целевых хостов. Сами узлы описываются в базе, по умолчанию это файл ~/.dtdb, но с помощью параметра -D/--db можно указать любой другой файл (или, как вариант, изменить значение переменной DTOOLS_DB=~/.dtdb в самом скрипте). Каждый узел описывается в отдельной строке, после которой указываются тэги, которым он будет соответствовать.

localhost www smtp mysql

host1 www mysql wp

host2 www pg wp

Пример самый простой, на самом деле тэгов и узлов может быть много, и, таким образом, можно описать все возможные варианты для подачи команд. Как и принято в UNIX, названия регистрозависимы, то есть mysql и MySQL – это разные тэги.

Чтобы просмотреть список узлов для определенного тэга, необходимо использовать параметр list:

$ dt tag:www list

Возможна выборка узлов с несколькими тэгами. Например, выберем все хосты, у которых есть тэги mysql или wp:

$ dt tag:mysql+tag:wp list

Или нам нужны только узлы, у которых присутствуют оба тэга одновременно:

$ dt tag:mysql:tag:wp list

Все шаблоны описаны файлами в /usr/lib/dtools/patterns (в ~/.dtools/patterns шаблоны может создавать сам пользователь). Кроме указанных, есть также и операция отрицания, например, все тэги, кроме wp, можно отобрать с помощью tag:wp:not::, и другие шаблоны all (все), nil (по сути, пустышка), ec2 (узлы AWS EC2), out (внешний URL), и использование регулярных выражений.

Выборку возможно производить с помощью нескольких шаблонов. Но результат лучше вначале протестировать с помощью list или специального ключа -p/--pretend.

Для удобства можно использовать три парсера (dthost, dtstatus, dtcompact), выводящие результат в разной форме.

$ dt exp:.* list | dthost

Узлы в ~/.dtdb можно заносить вручную, но, когда список большой, это становится неудобно. Здесь проще использовать команду add. Добавим host3 с тэгом mysql:

$ dt sys:host3 add mysql

Операции производятся через SSH. Вначале следует подключиться по ssh к удаленной системе, и узел будет автоматически добавлен ~/.ssh/known_hosts. Это можно сделать и самому:

ssh-keyscan host >> ~/.ssh/known_hosts

Все должно работать автоматически. Но здесь есть нюансы. По умолчанию для аутентификации используется открытый ключ, а не логин/пароль, а поэтому в зависимости от ситуации будет выдаваться ошибка. Удобнее скопировать открытый ключ на удаленные системы, это можно сделать вручную или с помощью команды ssh-copy-id. Но в обычном режиме это вряд ли получится, поэтому следует использовать интерактивный (-i), вводя пароль к каждому узлу:

$ dt -i exp:.* ssh-copy-id ~/.ssh/id_dsa.pub

Здесь есть тонкость, не описанная в документации, – подключение производится с помощью текущей учетной записи, и как-либо указать иную нельзя. Но выход найти просто – узлы базы следует прописывать в стиле ssh, как user@host. Команды, которые может выполнять dtools, – это именно «внутренние» команды, а не команды ОС. Хотя для удобства они созвучны.

  1. Сайт dtools – http://ajdiaz.me/dtools.

Подготовил Сергей Яремчук


Комментарии отсутствуют

Добавить комментарий

Комментарии могут оставлять только зарегистрированные пользователи

               Copyright © Системный администратор

Яндекс.Метрика
Tel.: (499) 277-12-41
Fax: (499) 277-12-45
E-mail: sa@samag.ru