Shell脚本判断服务器SSH免密是否配置完成

需求

最近一批服务器配置了SSH免密登录,需要编写一个脚本检查SSH免密是否可用

服务清单

将服务器IP地址配置到一个文件中ip_list.txt,内容如下:

bash 复制代码
192.168.1.1
192.168.1.2
192.168.1.3

检查脚本

bash 复制代码
#!/bin/bash

serverfile=ip_list.txt
hostname=''
while read line; do
    # 获取IP
    IP=`echo $line | cut -d " " -f1 | sed 's/\r//'`
    if [ -z "$hosts" ]; then
        hosts="$IP"
    else
        hosts="$hosts $IP"
    fi
done < ./$serverfile

for ip in $hosts
do
    # 执行远程命令,并将标准输出和标准错误合并后传递给过滤管道
    ssh -q root@$ip "echo 'TEST'" 2>&1 | grep -v -E "TEST|Authorized|Web console" | grep -v '^$'

    # 关键步骤:获取上一条ssh命令的退出状态码
    # 在Bash中,${PIPESTATUS[0]} 记录了管道中第一个命令(即ssh)的退出状态
    exit_code=${PIPESTATUS[0]}

    # 根据状态码判断是否成功
    if [ $exit_code -eq 0 ]; then
        echo "$ip OK"
    else
        echo "$ip FAIL (退出码: $exit_code)"
fi
done

检查结果

bash 复制代码
192.168.1.1 OK
192.168.1.2 FAIL (退出码: 255)
192.168.1.3 OK
相关推荐
大哥您好7 小时前
QEMU 11.1.2 多架构编译指南(x86_64 / aarch64 / riscv64)
linux·服务器
Gauss松鼠会8 小时前
高斯数据库(openGauss)的物理存储结构
运维·服务器·数据库·sql·opengauss·经验总结
Android系统攻城狮8 小时前
Linux Gstreamer深度解析之gst_audio_ring_buffer_prepare_read调用流程与实战(七十四)
linux·运维·服务器·gstreamer音视频·音视频进阶
杨云龙UP8 小时前
PostgreSQL 18.4 数据库整库迁移实战:pg_dump 备份与 pg_restore 恢复完整操作手册
运维·服务器·数据库·postgresql·pg_dump·pg_restore
无人生还别怕10 小时前
如何安装任意版本docker
运维·docker·容器
土星云SaturnCloud10 小时前
土星云智慧服务区方案:AI视觉+边缘计算+视频存管一体化的全场景智能化落地解析
服务器·人工智能·ai·边缘计算
T0uken10 小时前
Colab:SSH 访问免费 GPU Server
运维·ssh
Python大数据分析@10 小时前
通过 MCP 实现 AI Agent自动化数据采集
运维·人工智能·爬虫·自动化
Initialize2930811 小时前
告警一条接一条刷屏?五步治理告警风暴
运维
帷幕落秋11 小时前
Docker镜像加速
运维·docker