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
相关推荐
电商API_180079052477 小时前
京东商品详情API技术文章
大数据·运维·人工智能·网络爬虫
三言老师8 小时前
秘诀-如何远程SSN访问家里的八台电脑(frp 实操方案)
linux·运维·ssh
躺不平的理查德8 小时前
ARCH与交叉编译器的关系
服务器·arm
BTU_YC9 小时前
Docker Compose 部署 DozerDB 完整教程
运维·docker·容器
谢慧琼10 小时前
2026零基础做企业网站,低成本搭建官方网站
服务器·前端·javascript
RisunJan12 小时前
Linux命令-scriptreplay(终端会话回放)
linux·运维·chrome
x²+(y-√³x²)²=113 小时前
Linux打包文件到Windows,文件/文件类型丢失
linux·运维·windows
世人万千丶13 小时前
去重插入与超限淘汰:ArkTS 实现鸿蒙搜索历史的 LIMIT 艺术
运维·服务器·学习·华为·harmonyos·鸿蒙
柒号华仔13 小时前
「速通Shell」聚砖成墙,Shell函数封装之道
linux·ssh·bash
未来之窗软件服务13 小时前
企业自动化运营-电子合同预览-东方仙盟
运维·自动化·仙盟创梦ide·东方仙盟