Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否有一个可靠的条件或事实来检查主机是否可以使用SSH成功登录到另一台服务器?_Ssh_Ansible - Fatal编程技术网

是否有一个可靠的条件或事实来检查主机是否可以使用SSH成功登录到另一台服务器?

是否有一个可靠的条件或事实来检查主机是否可以使用SSH成功登录到另一台服务器?,ssh,ansible,Ssh,Ansible,我需要检查主机是否可以使用SSH成功登录到另一台服务器 有什么方法可以做到这一点吗?没有这种方法。如果你仔细想想,用内置的事实或其他机制是不可能做到这一点的。Ansible应该如何知道其他主机、使用什么用户名、身份验证方法等。。。而且,如果Ansible试图让每个主机只连接到它所知道的其他主机,那将是一种浪费 您需要编写一个任务并保存输出以供进一步使用。但这其实应该很容易 - shell: ssh other.host echo awesome that works failed_when:

我需要检查主机是否可以使用SSH成功登录到另一台服务器


有什么方法可以做到这一点吗?

没有这种方法。如果你仔细想想,用内置的事实或其他机制是不可能做到这一点的。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登录到服务器