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
相关推荐
七分小魔女4 小时前
MySQL查看服务器/客户端版本
服务器·数据库·mysql
想唱rap4 小时前
C++list类的模拟实现
linux·运维·服务器·数据结构·c++·windows·list
喜欢你,还有大家4 小时前
SELinux 安全机制
服务器·网络·安全
思麟呀4 小时前
Linux的进程认识上
linux·运维·服务器
技术liul5 小时前
Centos 7 :VMware Tools 启动脚本未能在虚拟机中成功运行
linux·运维·centos
j七七5 小时前
5分钟搭微信自动回复机器人5分钟搭微信自动回复机器人
运维·服务器·开发语言·前端·python·微信
大锦终5 小时前
【Linux】HTTP协议
linux·运维·服务器·网络·http
ragnwang6 小时前
解决 Ubuntu 安装 NVIDIA 固件时的包冲突问题
linux·运维·ubuntu
rengang666 小时前
AI驱动的DevOps:AI大模型自动化部署、监控和运维流程
运维·人工智能·ai编程·devops·ai智能体编程