我想测试我配置的主机是否可以到达特定服务器并连接到特定的TCP端口。如果它不能播放剧本失败。
我该怎么做?
答案 0 :(得分:12)
有wait_for模块。
要检查target.host
是否可以访问remote.host:8080
:
- hosts: target.host
tasks:
- wait_for: host=remote.host port=8080 timeout=1
- debug: msg=ok
文档中还有很多其他示例。
答案 1 :(得分:0)
使用 wait_for
没问题,但它需要服务实际运行并给出回复。
如果您只想检查防火墙中的端口是否打开,可以使用curl
。
- name: Check if host is reachable
shell:
cmd: "/usr/bin/curl --connect-timeout 10 --silent --show-error remote.host:8080"
warn: no
executable: /bin/bash
register: res
failed_when: res.rc in [28] or res.stderr is search("No route to host")
当端口打开但服务没有运行时,您会得到一个 curl: (7) Failed connect to 10.192.147.224:27019; Connection refused"
,您认为可以。
被防火墙阻止的连接将返回 curl: (28) Connection timed out after 10001 milliseconds