下面是几个IP地址及其telnet响应(输出)
telnet 10.9.9.112 22
Trying 10.9.9.112......
telnet 10.9.9.143 22
Trying 10.9.9.143.....
telnet: connect to address 10.9.9.143: Connection refused.
对于第一个IP 10.9.9.112
,没有连接,防火墙阻止了从源到目标的任何连接。输出仅显示Trying ....,并保持这种状态,而无需打印其他任何内容。
对于第二个IP 10.9.9.143
,我立即在输出中得到Connection refused
,并将控件返回到提示。
我希望抓住when
条件下的两种情况,并针对两种情况进行不同的活动。
我尝试使用Ansible的telnet
模块,但我不知道如何在注册变量中同时获取这两个不同的输出。
就我而言,它为两个IP打印相同的消息。
第一个IP的可用输出:
TASK [debug] *************************************
ok: [localhost] => {
"msg": "HERE:{u'msg': u'Timeout when waiting for 10.9.9.112', u'failed': True, 'changed': False, u'elapsed': 4}"
Ansible Output for second ip:
TASK [debug] *************************************
ok: [localhost] => {
"msg": "HERE:{u'msg': u'Timeout when waiting for 10.9.9.143', u'failed': True, 'changed': False, u'elapsed': 3}"
我看到的唯一区别是经过时间的值。
这是我的剧本。
---
- name: "Play 1"
hosts: localhost
tasks:
- wait_for:
hosts: "{{ item }}"
port: 22
state: started
delay: 3
timeout: 90
ignore_errors: yes
register: telnetout
loop:
- 10.9.9.112
- 10.9.9.143
- debug:
msg: "HERE: {{ telnetout }}"
答案 0 :(得分:0)
telnet
模块不幸地没有在输出中记录Connection Refused
消息。
我们必须像下面那样使用raw
模块。
---
- name: "Play 1"
hosts: localhost
tasks:
- raw: "timeout --signal=9 2 telnet {{ item }} 22"
ignore_errors: yes
register: telnetout
loop:
- 10.9.9.112
- 10.9.9.143
- debug:
msg: "HERE: {{ telnetout }}"