检查ssh连接是否成功的脚本

时间:2018-08-09 08:20:54

标签: shell

我有100台服务器。从第一台服务器,我想检查从第一台服务器到其他服务器的ssh连接是否正常。

如果确定,则将输出确定,否则,将输出“失败”。

我之前使用主机名和密钥对进行了一些设置,所以基本上我只输入:

ssh name-server 

那我会知道结果的。

例如

失败的情况:

[centos@tony]$ ssh server1
Last login: Thu Aug  9 17:01:21 2018 from 172.21.11.5
Connection to server1 closed.

好的情况:

[centos@tony]$ ssh server1
Last login: Thu Aug  9 17:01:21 2018 from 172.21.11.5

我有一个文件list.txt包含所有服务器的所有主机名。

server1
server2
...

我的脚本不起作用:

#!/bin/bash
for i in $(cat /home/centos/list.txt); do
result=`ssh i | grep closed`
if [ -z "$result" ] ; then
  echo "OK"
fi

1 个答案:

答案 0 :(得分:2)

来自man ssh

  

退出状态

     

ssh以远程命令的退出状态退出,如果发生错误则以255退出。

因此,只需在远程服务器上执行一个简单命令并检查其是否成功。可以想象的最简单的命令是true(它仅返回0 /成功):

#!/bin/bash
for server in $(cat /home/centos/list.txt)
do
  if ssh $server "true"
  then
    echo "Server $server: OK"
  fi
done