diff --git a/lib/ansible/modules/expect.py b/lib/ansible/modules/expect.py index 8f8355ff55f..614476332b6 100644 --- a/lib/ansible/modules/expect.py +++ b/lib/ansible/modules/expect.py @@ -37,9 +37,11 @@ options: responses: type: dict description: - - Mapping of expected string/regex and string to respond with. If the - response is a list, successive matches return successive - responses. List functionality is new in 2.1. + - Mapping of prompt regular expressions and corresponding answer(s). + - Each key in O(responses) is a Python regex U(https://docs.python.org/3/library/re.html#regular-expression-syntax). + - The value of each key is a string or list of strings. + If the value is a string and the prompt is encountered multiple times, the answer will be repeated. + Provide the value as a list to give different answers for successive matches. required: true timeout: type: raw @@ -68,15 +70,10 @@ notes: - If you want to run a command through the shell (say you are using C(<), C(>), C(|), and so on), you must specify a shell in the command such as C(/bin/bash -c "/path/to/something | grep else"). - - The question, or key, under O(responses) is a python regex match. Case - insensitive searches are indicated with a prefix of C(?i). + - Case insensitive searches are indicated with a prefix of C(?i). - The C(pexpect) library used by this module operates with a search window of 2000 bytes, and does not use a multiline regex match. To perform a start of line bound match, use a pattern like ``(?m)^pattern`` - - By default, if a question is encountered multiple times, its string - response will be repeated. If you need different responses for successive - question matches, instead of a string response, use a list of strings as - the response. The list functionality is new in 2.1. - The M(ansible.builtin.expect) module is designed for simple scenarios. For more complex needs, consider the use of expect code with the M(ansible.builtin.shell) or M(ansible.builtin.script) modules. (An example is part of the M(ansible.builtin.shell) module documentation). @@ -97,14 +94,17 @@ EXAMPLES = r''' # you don't want to show passwords in your logs no_log: true -- name: Generic question with multiple different responses +- name: Match multiple regular expressions and demonstrate individual and repeated responses ansible.builtin.expect: command: /path/to/custom/command responses: Question: + # give a unique response for each of the 3 hypothetical prompts matched - response1 - response2 - response3 + # give the same response for every matching prompt + "^Match another prompt$": "response" - name: Multiple questions with responses ansible.builtin.expect: