首页 > 解决方案 > 当stdout没有结果时如何显示stderr输出

问题描述

我是使用ansible进行自动化的新手,我正在尝试检查管理主机上是否存在用户帐户。情况是,当用户帐户存在时,结果将注册到标准输出,但当不存在时,它会显示在标准错误中。我正在使用调试模块来显示结果。我想问一下如何过滤结果,例如当用户帐户存在时,它只会显示stdout调试功能,而当它不存在时,它只会显示stderr功能。尝试检查我知道的每一页,但找不到解决方案。提前致谢,

代码:

[root@ansible playbook]# vi UAA.yml
---
- hosts: all
  gather_facts: false
  remote_user: root
  ignore_errors: true
  vars_prompt:

    - name: userID #variable
      prompt: "Please enter userID"
      private: no

  tasks:

  - name: Checking if user exist
    command: id '{{ userID }}'
    register: result

  - debug:
      msg: " {{ result.stdout_lines }} "

  - debug:
      msg: " {{ result.stderr_lines }} "

标签: pythonansible

解决方案


使用when语句来验证标准输出是否为空。尝试如下。

---
- hosts: all
  gather_facts: false
  remote_user: root
  ignore_errors: true
  vars_prompt:

    - name: userID #variable
      prompt: "Please enter userID"
      private: no

  tasks:

  - name: Checking if user exist
    command: id '{{ userID }}'
    ignore_errors: yes
    register: result

  - debug:
      msg: " {{ result.stdout_lines }} "
    when: user.stdout != ""

  - debug:
      msg: " {{ result.stderr_lines }} "
    when: user.stdout == ""

推荐阅读