我正在尝试使用 ansible ping google.com fas 测试我的节点上的互联网访问。当 ping 回复回来时,代码运行良好,但对于失败的尝试,我收到一个 dict 对象错误。有人可以为我检查下面的代码吗?下面还列出了我遇到的错误。我确定这只是一个小问题。
- name: Checking Internet Access
ios_command:
commands: ping www.google.com source g0/1.1
provider: "{{cli}}"
wait_for:
- result[0] contains "!!!"
register: result
failed_when: "not '!!!' in result.stdout[0]"
致命:[192.168.12.252]:失败!=> {"failed": true, "msg": "条件检查 'not '!!!' 在 result.stdout[0]' 中失败。错误是:评估条件时出错(在 result.stdout[0] 中不是 '!!!'):'dict object' 没有属性 'stdout'"}
最好在 result.rc 中使用命令的退出代码(返回代码),而不是读取和匹配文本输出。从 Debian 9 的手册页:
如果 ping 根本没有收到任何回复数据包,它将以代码 1 退出。 如果同时指定了数据包计数和截止时间,并且在截止时间到达时收到的数据包少于计数,它也会以代码 1 退出。在其他错误时,它以代码 2 退出。否则,它以代码 0 退出。
例如:
- hosts: short.fritz.box
tasks:
- name: checking ping response from magnus
command: ping -c 3 magnus.fritz.box
register: result
failed_when: result.rc != 0
在 Debian 9.1 上使用 Ansible 2.3.1 进行测试。当 magnus 运行且可达时成功,当 magnus 暂停时失败。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句