如何测量RHEL机器通过SSH远程登录的耗时
测量RHEL机器SSH登录耗时的实现方法
完全可以实现SSH登录耗时的测量,以下是针对RHEL环境的具体实现方案:
核心实现思路
通过在发起SSH连接前后记录时间戳,计算两者差值得到登录耗时,同时使用SSH的批量模式避免交互干扰,确保计时准确。
1. 基础版脚本(秒级精度)
适合批量测量machine_1到machine_100的登录耗时,前提是machine_Y已配置免密登录到所有目标机器:
#!/bin/bash # 遍历目标机器列表 for host in machine{1..100}; do # 记录开始时间(秒级) start_time=$(date +%s) # 发起SSH连接并执行空命令(验证登录成功) if ssh -o BatchMode=yes -o ConnectTimeout=10 "$host" true; then # 记录结束时间并计算耗时 end_time=$(date +%s) elapsed=$((end_time - start_time)) echo "ssh time until login to $host was $elapsed sec" else echo "Failed to login to $host" fi done
2. 进阶版脚本(毫秒级精度)
如果需要更精确的计时,可以使用纳秒级时间戳计算:
#!/bin/bash for host in machine{1..100}; do start_time=$(date +%s%N) if ssh -o BatchMode=yes -o ConnectTimeout=10 "$host" true; then end_time=$(date +%s%N) # 转换为毫秒 elapsed_ms=$(( (end_time - start_time) / 1000000 )) # 输出秒+毫秒格式 echo "ssh time until login to $host was $((elapsed_ms/1000)).$((elapsed_ms%1000)) sec" else echo "Failed to login to $host" fi done
关键参数说明
BatchMode=yes:禁用SSH的交互模式,避免弹出密码输入提示,确保计时不受人工操作影响ConnectTimeout=10:设置连接超时时间(单位:秒),防止因网络问题导致脚本长时间卡住
前置准备
在machine_Y上执行以下命令完成免密登录配置(批量操作可结合循环):
ssh-copy-id machine1 # 循环示例: for host in machine{1..100}; do ssh-copy-id "$host"; done
内容的提问来源于stack exchange,提问作者Judy
相关产品推荐
相关产品推荐

