我有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
答案 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