shell - 检查 ssh 连接是否成功的脚本
问题描述
我有 100 台服务器。从第一台服务器,我想检查从第一台服务器到其他服务器的 ssh 连接是否正常。
如果OK,则输出OK,否则输出Failed。
我之前使用主机名和密钥对进行了一些设置,所以基本上我只需输入:
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
解决方案
来自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
推荐阅读
- caching - dask 缓存延迟函数示例
- r - 在 R 中加入数据帧时行重复的问题
- java - 将未知的泛型类型保存到集合并恢复特定类型
- c# - 我在 C# 中收到 System.ArgumentOutOfRangeException 错误?
- php - WP数据库错误“字段列表”中的未知列“wp_”用于查询SELECT wp_
- wso2 - 通过 IAM 代理 WSO2 API Manager 3.0 的问题
- mysql - 我可以使用未知数据根据另一个表中的数据更新 SQL 表吗?
- css - 导航菜单居中:Wordpress 海明威主题
- javascript - 无法获取更新后的状态值 useState 和 UseEffect
- html - 如何在 Django 模板中使用 post 方法创建重定向按钮