expect - Выполнение команды и реакция на запросы.
Новая версия 2.0.
Обзор
- Модуль
expectвыполняет команду и отвечает на запросы. - Указанная команда будет выполнена на всех выбранных узлах. Она не будет обрабатываться через оболочку, поэтому переменные, такие как
$HOME, и операции, такие как"<",">","|", и"&", работать не будут.
Требования (к хосту, на котором выполняется модуль)
- python >= 2.6
- pexpect >= 3.3
Параметры
| параметр | обязательный | по умолчанию | варианты | комментарии |
|---|---|---|---|---|
| chdir | нет | Изменить текущую директорию перед выполнением команды. | ||
| command | да | Команда, которую модуль должен выполнить. | ||
| creates | нет | Имя файла. Если файл уже существует, этот шаг не будет выполнен. | ||
| echo | нет | Выводить ли ответы в консоль. | ||
| removes | нет | Имя файла. Если файла не существует, этот шаг не будет выполнен. | ||
| responses | да | Сопоставление ожидаемой строки/регулярного выражения и строки ответа. Если ответ — список, последовательные совпадения возвращают последовательные ответы. Функциональность списков новая в версии 2.1. | ||
| timeout | нет | 30 | Время ожидания ожидаемых строк в секундах. |
Примеры
- name: Case insensitve password string match
expect:
command: passwd username
responses:
(?i)password: "MySekretPa$$word"
- name: Generic question with multiple different responses
expect:
command: /path/to/custom/command
responses:
Question:
- response1
- response2
- response3
Примечания
Примечание
- Если нужно выполнить команду через оболочку (например, используя
<,>,|, и т.д.), необходимо указать оболочку в команде, например,/bin/bash -c "/path/to/something | grep else". - Вопрос или ключ в responses — это соответствие регулярному выражению Python. Поиск без учета регистра обозначается префиксом
?i. - По умолчанию, если вопрос встречается несколько раз, его строковый ответ будет повторяться. Если необходимы разные ответы для последовательных совпадений с вопросом, вместо строкового ответа используйте список строк в качестве ответа. Функциональность списков — новинка в версии 2.1.
- Модуль expect предназначен для простых сценариев. Для более сложных задач рассмотрите использование кода expect с модулями shell или script. (Пример приведен в документации к модулю shell)
Статус
Этот модуль помечен как предварительная версия, что означает, что он не гарантирует обратную совместимость интерфейса.
Для получения помощи в разработке модулей, если у вас есть желание, пожалуйста, ознакомьтесь с Информация о сообществе и участие в разработке, Тестирование Ansible и Разработка модулей.
© 2012–2018 Michael DeHaan
© 2018–2019 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/2.4/expect_module.html