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

跳板机Shell脚本读取CSV执行SSH拉取远端JSON文件问题求助

问题修复方案

SSH参数配置修正

  • -q参数本身可以屏蔽大部分ssh输出,要彻底屏蔽登录banner、motd等无关内容,额外添加-o LogLevel=ERROR参数即可
  • 你添加的-tt参数是多余的,该参数用于强制分配伪终端,仅在需要执行交互命令时使用,非交互场景下无需添加。之前终端卡住的原因是ssh默认会读取标准输入,在while循环中会把CSV文件的剩余内容吃掉,添加-n参数将ssh的标准输入重定向到/dev/null即可解决卡顿问题。

脚本逻辑错误修复

你无法读取远端文件内容、输出异常的原因有四个:

  1. 变量引用错误:你用单引号包裹了cat $field2命令,单引号在bash中不会解析本地变量,发送到远端服务器的命令是字面量cat $field2,远端不存在该变量自然无法读取到对应文件,需要替换为双引号。
  2. 未跳过CSV表头:你当前的脚本会把CSV第一行的表头ServerName,Filename也作为有效记录处理,属于无效操作。
  3. 多余的for循环:你写的for HOSTNAME in field1逻辑完全多余,且未加$引用变量,不仅没有实际作用还会引入异常。
  4. 未处理字段空白:你提供的CSV示例中字段存在首尾空格,直接读取使用会导致ssh连接失败、路径识别错误。

修复后的完整脚本

#!/bin/bash
# 跳过表头,从CSV第二行开始读取记录
tail -n +2 INC-State.csv | while IFS=, read -r field1 field2
do
    # 去除字段首尾的空白字符
    field1=$(echo "$field1" | xargs)
    field2=$(echo "$field2" | xargs)
    # 执行远端文件读取命令
    ssh -q -n -o LogLevel=ERROR "$field1" "cat $field2"
done

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 19:54:02