
脚本1
#!/bin/bash
# 1、需要在同级目录准备测试文件,例:./test.txt;字段 ip port user pass;
# 2、需要提前安装sshpass,(yum install sshpass 或 apt install sshpass)。
host_file="./test.txt"
if [ ! -f "${host_file}" ];then
echo "错误:${host_file} 文件不存在!"
exit 1
fi
echo "==================== SSH批量连通测试开始 ===================="
while read -r ip port user pass <&3; do
# 跳过注释、空行
if [[ -z "${ip}" || "${ip}" =~ ^# ]];then
continue
fi
echo "正在检测:${user}@${ip}:${port}"
sshpass -p "${pass}" ssh \
-o StrictHostKeyChecking=no \
-o ConnectTimeout=5 \
-p "${port}" \
"${user}@${ip}" "exit 0" >/dev/null 2>&1
if [ $? -eq 0 ];then
echo "✅ ${ip} 登录成功"
else
echo "❌ ${ip} 登录失败(密码/端口/网络异常)"
fi
echo "-------------------------------------------------------------"
done 3< "${host_file}"
echo "==================== 全部主机测试完成 ===================="
脚本2
#!/bin/bash
# 1、需要在同级目录准备测试文件,例:./test.txt;字段 ip port user pass;
# 2、需要提前安装sshpass,(yum install sshpass 或 apt install sshpass)。
host_file="./test.txt"
[ ! -f "$host_file" ] && echo "文件不存在" && exit 1
echo "==== SSH批量测试 ===="
while IFS= read -r line <&3; do
# 跳过注释空行
[[ -z "$line" || "$line" =~ ^# ]] && continue
# 拆分变量
ip=$(echo $line | awk '{print $1}')
port=$(echo $line | awk '{print $2}')
user=$(echo $line | awk '{print $3}')
pass=$(echo $line | awk '{print $4}')
echo "检测 $user@$ip:$port"
sshpass -p "$pass" ssh -o StrictHostKeyChecking=no -o ConnectTimeout=5 -p "$port" "$user@$ip" exit >/dev/null 2>&1
[ $? -eq 0 ] && echo "✅成功" || echo "❌失败"
echo "-------------------------"
done 3< "$host_file"
echo "全部检测完毕"
#!/bin/bash
# 1、需要提前安装nc(yum -y install nc)
# 2、在这里填写需要检测的IP和端口,格式:IP 端口
host_list=(
"192.168.1.30 22"
"192.168.1.31 22"
"192.168.1.32 22"
"192.168.1.33 22"
)
echo "==================== 批量端口连通检测 ===================="
for line in "${host_list[@]}"; do
ip=$(echo $line | awk '{print $1}')
port=$(echo $line | awk '{print $2}')
echo "检测 $ip:$port"
timeout 3 nc -z "$ip" "$port" >/dev/null 2>&1
if [ $? -eq 0 ];then
echo "✅ $ip:$port 端口开放"
else
echo "❌ $ip:$port 端口不通"
fi
echo "---------------------------------------------------------"
done
echo "==================== 检测完成 ===================="