是否有一个可靠的条件或事实来检查主机是否可以使用SSH成功登录到另一台服务器?
我需要检查主机是否可以使用SSH成功登录到另一台服务器是否有一个可靠的条件或事实来检查主机是否可以使用SSH成功登录到另一台服务器?,ssh,ansible,Ssh,Ansible,我需要检查主机是否可以使用SSH成功登录到另一台服务器 有什么方法可以做到这一点吗?没有这种方法。如果你仔细想想,用内置的事实或其他机制是不可能做到这一点的。Ansible应该如何知道其他主机、使用什么用户名、身份验证方法等。。。而且,如果Ansible试图让每个主机只连接到它所知道的其他主机,那将是一种浪费 您需要编写一个任务并保存输出以供进一步使用。但这其实应该很容易 - shell: ssh other.host echo awesome that works failed_when:
有什么方法可以做到这一点吗?没有这种方法。如果你仔细想想,用内置的事实或其他机制是不可能做到这一点的。Ansible应该如何知道其他主机、使用什么用户名、身份验证方法等。。。而且,如果Ansible试图让每个主机只连接到它所知道的其他主机,那将是一种浪费 您需要编写一个任务并保存输出以供进一步使用。但这其实应该很容易
- shell: ssh other.host echo awesome that works
failed_when: false
register: ssh_test
然后,您可以在任何其他任务中使用该输出作为条件:
- foo: bar
when: "'awesome that works' in ssh_test.stdout_lines"
没有事实证明这一点,但您可以使用ping模块 为了扩展@smiller171提供的答案,这里有一个剧本将测试从target1->target2的SSH(或其他清单配置的通信)连接。状态变量将包含可用于确定连接是否失败的信息
- hosts: target2
tasks:
- ping:
delegate_to: target1
register: status
ignore_errors: yes
- debug: msg="target1 failed to communicated with target2"
when: status | failed
你所说的“有权限”到底是什么意思?如果主机可以连接到另一台主机的端口22,或者如果您确实可以登录,例如使用ssh密钥转发?我的意思是授权您使用ssh登录到服务器