tasks: - name: exec get config expect: command: "get config" responses: "--- more ---.": " " ".*>.": "break" register: result1 中能用cli_commond 模块么
时间: 2023-07-02 10:12:52 浏览: 135
是的,您可以使用 Ansible 的 `cli_command` 模块来执行命令并获取输出结果。下面是一个使用 `cli_command` 模块的简单示例:
```
- name: execute get config command on remote host
hosts: myserver
tasks:
- name: get config
cli_command:
command_string: get config
register: result1
- debug:
var: result1.stdout_lines
```
在这个例子中,我们使用 `cli_command` 模块来执行 `get config` 命令,并将输出结果保存在 `result1` 变量中。最后,我们使用 `debug` 模块来打印输出结果。
请注意,`cli_command` 模块需要在目标主机上安装支持 CLI 的网络设备,并且需要指定正确的登录凭据,比如用户名和密码。另外,某些网络设备可能需要使用特定的协议来连接,比如 SSH 或 Telnet。您需要根据实际情况来选择正确的协议。
相关问题
tasks: - name: exec get config expect: command: "get config" responses: "--- more ---.": " " ".*>.": "break" register: result1
根据您提供的信息,这个 Ansible 任务似乎是使用 `expect` 模块来执行命令并等待特定的响应。如果您想在远程服务器上执行命令 `get config` 并获取输出结果,您可以尝试以下代码:
```
- name: execute get config command on remote host
hosts: myserver
tasks:
- name: get config
expect:
command: get config
responses:
"--- more ---.": " "
".*>.": "break"
register: result1
- debug:
var: result1.stdout
```
在这个例子中,我们使用 `expect` 模块来执行 `get config` 命令,并等待特定的响应。一旦收到 `--- more ---.` 或者 `.*>.` 响应,`expect` 模块就会停止等待并将输出结果保存在 `result1` 变量中。最后,我们使用 `debug` 模块来打印输出结果。
请注意,`expect` 模块需要在目标主机上安装 `expect` 工具。如果您的目标主机没有安装该工具,则需要先安装。另外,如果您的目标主机需要进行身份验证,则需要使用 `ansible_user` 和 `ansible_password` 变量来指定用户名和密码。
tasks: - name: exec get config expect: command: "get config" responses: "--- more --- ": " " ".*> ": "break" register: result1
根据你提供的代码,我看到可能存在缩进问题。根据 YAML 的语法规则,缩进是非常重要的,因为它表示层次结构。
请检查你的代码缩进是否正确。每个任务应该以 `-` 开头,并且在 `tasks` 下应该有两个空格的缩进。`expect` 模块应该有四个空格的缩进,而 `command` 和 `responses` 应该有两个额外的空格缩进,如下所示:
```
tasks:
- name: exec get config
expect:
command: "get config"
responses:
"--- more --- ": " "
".*> ": "break"
register: result1
```
请注意,每个任务都必须以 `-` 开头,并且在 `tasks` 下必须有两个空格的缩进。此外,每个模块都必须正确缩进,并在 `key: value` 中使用冒号和空格进行分隔。
如果你的问题不是缩进问题,请提供更多的代码和错误消息以便我更好地帮助你。
阅读全文