python - 当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 }} "
解决方案
使用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 == ""
推荐阅读
- python - 用其他列的索引替换列表类型的列项
- c - 在c编程中将一个字符串变量复制到另一个字符串变量时遇到问题
- javascript - V8 字节码中的 LdaKeyedProperty 是什么?
- c# - 发送带有大于 4MB 附件的电子邮件
- c++ - 提升排序如何处理额外的内存分配=
- python - 如何提高我的 python 函数 for 循环的性能?
- swift - 使用未声明的标识符“_AppsFlyerdelegate”
- marshmallow - Marshmallow 和 Flask-RESTPlus,它们应该如何一起使用?
- algorithm - 重新排列字符串排列的算法。我该如何解决?
- python - 在 docker 的共享卷中创建符号并在主机中访问它