gpt4 book ai didi

Ansible on a linux like OS 回答我需要回答的问题是

转载 作者:行者123 更新时间:2023-12-04 08:12:25 27 4
gpt4 key购买 nike

我有一个可以通过 ssh 进入的 DataDomain 系统。我需要在 DataDomain 上自动执行一个过程,该过程在命令后提出一个问题:

storage add tier active dev3

Object-store is not enabled. Filesystem will use block storage for user data.
Do you want to continue? (yes|no) [no]: yes
我确实尝试使用 Ansible 并使用原始模块
- name:  add dev3 active tier
raw: storage add tier active dev3
register: RESULT
这是失败的:
TASK [add dev3 active tier] *******************************************************************************************************************************************************************
fatal: [3.127.218.96]: FAILED! => {"changed": true, "msg": "non-zero return code", "rc": 9, "stderr": "Shared connection to 3.127.218.96 closed.\r\n", "stderr_lines": ["Shared connection to 3.127.218.96 closed."], "stdout": "\r\n**** Could not add storage: system capacity exceeds the limit allowable by the license.\r\n\r\n", "stdout_lines": ["", "**** Could not add storage: system capacity exceeds the limit allowable by the license.", ""]}
以下 ansible-playbook 也失败了:
- name:  add dev3 active tier
raw: |
yes | storage add tier active dev3
register: RESULT
期望模块不接受原始并且也失败了。
 - name expect for add dev3 active tier
expect:
raw: storage add tier active dev3
responses:
Question:
- Do you want to continue? (yes|no) [no]: y
timeout: 30
register: RESULT
知道如何回答问题并回答"is"吗?

最佳答案

您的 expect 的问题任务来自两件事:
首先,事实是:

The question, or key, under responses is a python regex match.


来源: https://docs.ansible.com/ansible/latest/collections/ansible/builtin/expect_module.html#notes
因此,您将不得不转义每个可能在正则表达式中有意义的符号。
在您的情况下,这些符号是 ? , ( , | , ) , [] .
注意:这些类型或行为很容易在像这样的正则表达式工具中测试: https://regex101.com/r/ubtVfH/1/
二、 responses key 有两种您在这里混合的格式。
  • 要么你有
    responses:
    Question:
    - response1
    - response2
    - response3
    您不指定脚本中的问题,而是指定答案的顺序列表。当然,这只有在问题和响应总是以相同的顺序出现时才有效。
  • 要么你使用
    responses:
    This is the prompt of the question in the script: that is the answer
    This is another question: and here is the corresponding answer
    在这里,您可以确定您正确地将每个答案映射到相应的问题。注意没有Question key in this dictionary 并且答案是字典的键,而不是列表。

  • 因此,对于您的用例,expect 的正确使用是:
    - expect:
    command: storage add tier active dev3
    responses:
    Do you want to continue\? \(yes\|no\) \[no\]: 'yes'
    timeout: 30
    register: result

    关于Ansible on a linux like OS 回答我需要回答的问题是,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65885548/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com