如何获得 Ansible telnet 模块的响应
How to get response of Ansible telnet module
下面是几个 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 的 Ansible 输出:
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}"
我看到的唯一区别是 elapsed 的值。
这是我的剧本。
---
- 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 }}"
不幸的是,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 }}"
下面是几个 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 的 Ansible 输出:
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}"
我看到的唯一区别是 elapsed 的值。
这是我的剧本。
---
- 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 }}"
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 }}"