You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Shell脚本批量SSH执行Linux命令并存储结果故障排查

脚本问题排查与修复方案

原脚本核心问题

  • 语法错误:while read line do 缺少语句分隔符,需要在line后添加;,或者将do单独放在下一行
  • SSH执行逻辑错误:当前写法仅会登录远程主机进入交互会话,不会自动执行后续命令,只有手动退出远程会话后,才会在你本地的机器执行cat /etc/redhat-release,拿到的是本地系统版本,不是目标主机的结果
  • 循环异常问题:ssh默认会读取标准输入,会吞掉host.txt的后续内容,导致循环只执行一次就结束
  • 结果记录逻辑错误:没有关联主机信息和执行结果,日志无法对应每条结果所属的主机
  • 关于exit的疑问:如果通过ssh指定远程执行命令,命令执行完成后会话会自动断开,不需要额外添加exit操作

修复后的可用脚本

#!/bin/bash
# 可选:清空历史日志
> logfile.txt

while read line; do
    # 跳过host.txt中的空行
    [ -z "$line" ] && continue
    # 远程执行命令并捕获结果,-n参数避免ssh读取标准输入导致循环异常
    release_info=$(sshpass -p 'abc123' ssh -n -o StrictHostKeyChecking=no "$line" "cat /etc/redhat-release")
    # 写入日志,格式为 主机信息 系统版本
    echo "$line $release_info" >> logfile.txt
done < host.txt

内容的提问来源于stack exchange,提问作者Mohan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 08:39:01