但是匹配 --- more ---后面确实需要个空格匹配
时间: 2023-08-02 19:10:35 浏览: 44
非常抱歉,我之前的回答仍然存在问题。对于匹配 `--- more ---` 后面的空格,你是正确的,需要在响应字符串中包含空格。
所以,这个任务的 `expect` 模块可以这样编写:
```
- name: exec get config
expect:
command: "get config"
responses:
"--- more --- ": " "
".*> ": "break"
register: result1
```
在这个例子中,我们使用的正则表达式仍然是 `.*> `,用于匹配任意字符后面跟着一个 `>` 符号。`responses` 参数是一个字典,其中包含与每个匹配模式对应的响应。在这个例子中,我们的响应是一个空格或者 `break`,用于终止 expect 模块。
感谢您的指正,并对我的错误表示歉意。
相关问题
- name: exec get config expect: command: "get config" responses: "--- more --- ": " " ".*> ": "break" register: result1
这个任务的 `expect` 模块大体上是正确的,但是你的第一个响应字符串 `"--- more --- "` 后面多了一个空格,导致无法正确匹配。所以你需要把这个响应字符串改成 `"--- more ---"`。
这里是修改后的代码:
```
- name: exec get config
expect:
command: "get config"
responses:
"--- more ---": " "
".*> ": "break"
register: result1
```
在这个任务中,我们使用 `expect` 模块来执行命令 `get config`,并等待命令行输出中出现 `--- more ---` 或 `>` 符号。如果出现 `--- more ---`,则会自动发送空格以继续显示输出,直到出现 `>` 符号为止。当输出中出现 `>` 符号时,它会停止发送空格并将输出存储在变量 `result1` 中。
在这个例子中,我们使用了正则表达式 `.*> ` 来匹配任意字符后面跟着一个 `>` 符号。`responses` 参数是一个字典,其中包含与每个匹配模式对应的响应。在这个例子中,我们的响应是一个空格或者 `break`,用于终止 expect 模块。
这个任务可以用于获取网络设备的配置信息,并将其存储在变量中以供后续任务使用。
- name: exec get config cli_command: command: get config register: result1 ignore_errors: True 帮我改成如果回显带有more,则执行空格,直到出现> 停止,并且将变量存在result1中
好的,这是修改后的代码:
```
- name: exec get config
cli_command:
command: "get config"
check_all: true
patterns:
- "--- more ---"
- ">"
responses:
"--- more ---": " "
register: result1
```
这个任务在执行命令 `get config` 时,会等待命令行输出中出现 `--- more ---` 或 `>` 符号,如果出现 `--- more ---`,则会自动发送空格以继续显示输出,直到出现 `>` 符号为止。当输出中出现 `>` 符号时,它会停止发送空格并将输出存储在变量 `result1` 中。
这里使用了 `check_all` 参数来指示模块等待所有的 `patterns` 中的模式都出现才继续执行。`patterns` 参数是一个列表,其中包含要匹配的字符串模式。`responses` 参数是一个字典,其中包含与每个匹配模式对应的响应。在这个例子中,我们只有一个模式 `--- more ---`,并且它的响应是一个空格。
这个任务可以用于获取网络设备的配置信息,并将其存储在变量中以供后续任务使用。