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

NetCat客户端通信自动化脚本故障排查咨询

脚本问题排查与修复

核心问题分析

  1. Case匹配条件错误:脚本中case的场景条件用双引号包裹(如"GORGE"),但服务端发送的场景字符串是不带引号的(如GORGE),导致匹配失败,触发默认分支输出原场景名,而非对应的响应词。
  2. 无条件发送"y":每次循环都执行echo "y" > nc_pipe,会在场景交互阶段额外发送无效的"y",打乱服务端的交互流程。
  3. 非场景消息未写入管道:收到"What do you do?"或"Ok then! Let's go!"时,仅输出到终端,未写入nc_pipe,服务端无法收到回复,导致流程中断。
  4. 初始文件删除无容错:开头rm nc_pipe未加-f,若管道文件不存在会报错中断脚本。
  5. 分段写入易出问题:循环中逐段写入响应内容,可能因管道缓存导致输出顺序混乱。

修复后的脚本

rm -f nc_pipe

s="83.136.252.123"
p="40409"

mkfifo nc_pipe

nc $s $p < nc_pipe | while read -r nr
do
    # 仅在收到开始提示时发送y
    if [[ "$nr" == *"Ok then! Let's go!"* ]]; then
        echo "y" > nc_pipe
        continue
    fi

    # 处理场景请求,先组装完整响应
    arr=(${nr//, / })
    ((len=${#arr[@]}-1))
    response=""
    
    for i in {0..$len}
    do 
        case ${arr[i]} in 
            GORGE)  response+="STOP";; 
            PHREAK) response+="DROP";; 
            FIRE)   response+="ROLL";;
            "What do you do?") 
                echo "What do you do?" > nc_pipe
                response=""
                break
            ;;
            *) 
                response=""
                break
            ;; 
        esac
        
        if [ $i -lt $len ]; then
            response+="-"
        fi
    done
    
    # 发送组装好的响应
    if [[ -n "$response" ]]; then
        echo "$response" > nc_pipe
    fi
done

rm -f nc_pipe

关键修改说明

  • 修正匹配规则:去掉场景条件的双引号,直接匹配服务端发送的原始场景字符串,确保响应映射正确。
  • 控制"y"的发送时机:仅在收到Ok then! Let's go!时发送"y",避免干扰后续场景交互。
  • 统一响应写入逻辑:所有需要发送给服务端的内容都写入nc_pipe,包括交互提示消息。
  • 预组装响应内容:先把多场景的响应拼接成完整字符串,再一次性写入管道,避免分段写入的顺序问题。
  • 增加容错处理:删除管道文件时加-f参数,避免文件不存在时报错;遇到未知消息直接跳过发送,避免无效输出。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 04:23:15