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

Bash脚本通过Netcat连接无法发送消息,如何实现多消息发送?

解决Bash脚本连接服务器后无法发送消息及批量发送带前缀可变内容的问题

老兄,你遇到的这个问题我之前也碰到过——多半是因为用了一次性的管道输入方式(比如直接echo "test" | telnet your_server your_port),管道里的内容发完,连接直接就断了,根本没机会持续发消息。要搞定固定前缀加可变数据的多条消息发送,核心就是得把会话连接稳住,别发一条就跑。下面给你几个实用的方案,按需选:

方案1:用Netcat(nc)配合Bash循环+重定向

Netcat比telnet更适合脚本场景,灵活性拉满。我们可以用子shell循环生成消息,再通过管道传给nc,让它保持连接直到所有消息发完(甚至一直保持)。

比如要发送prefix_+1到10的数字消息,脚本这么写:

#!/bin/bash
SERVER="你的服务器IP"
PORT="你的服务器端口"
PREFIX="prefix_"

# 子shell循环生成消息,通过管道传给nc保持连接
(
  for i in {1..10}; do
    # 生成带前缀的可变消息,这里可以替换成你的自定义逻辑
    echo "${PREFIX}${i}"
    # 可选:每条消息间加延迟,避免给服务器太大压力
    sleep 0.5
  done
  # 如果需要一直保持连接,去掉下面的注释就行
  # sleep infinity
) | nc $SERVER $PORT

执行脚本后,nc会一直保持和服务器的连接,直到子shell的输出结束(或者你用sleep infinity让连接一直挂着,手动终止脚本才断开)。

方案2:用Expect处理交互式场景

如果你的服务器需要先交互(比如等欢迎信息、输入登录凭证)再发消息,Expect就是专门干这个的——它能自动识别服务器的响应,再触发后续操作,完全不用手动干预。

举个例子,先等服务器返回Welcome to server的欢迎信息,再循环发带前缀的消息:

#!/usr/bin/expect
set SERVER "你的服务器IP"
set PORT "你的服务器端口"
set PREFIX "prefix_"

# 启动telnet连接服务器
spawn telnet $SERVER $PORT

# 等待服务器的欢迎信息,确认连接成功建立
expect "Welcome to server"

# 循环发送10条带前缀的可变消息
for {set i 1} {$i <= 10} {incr i} {
  set message "${PREFIX}${i}"
  send "$message\r"  # 记得加回车,很多服务器需要这个来识别消息结束
  sleep 0.5
}

# 要是需要退出连接,就解开下面的注释
# send "exit\r"
expect eof

给脚本加执行权限:chmod +x send_messages.exp,直接运行就行,它会自动处理整个交互流程,绝不会提前断开连接。

方案3:纯Bash实现(无需额外工具)

如果你的环境没法装nc或Expect,纯Bash也能搞定。通过文件描述符的进程替换,把消息持续写入连接:

#!/bin/bash
SERVER="你的服务器IP"
PORT="你的服务器端口"
PREFIX="prefix_"

# 打开nc连接,把文件描述符3绑定到nc的输入
exec 3> >(nc $SERVER $PORT)

# 循环发送带前缀的消息
for i in {1..10}; do
  echo "${PREFIX}${i}" >&3
  sleep 0.5
done

# 关闭文件描述符,结束连接
exec 3>&-

这种方式完全依赖Bash自身特性,不用装任何额外工具,适合环境受限的场景。

几个关键注意点

  • 消息结束符:绝大多数服务器要求消息以换行符(\n)或回车换行(\r\n)结尾,所以发送时要么用默认加\n的echo,要么手动加\r(比如echo -e "${message}\r")。
  • 连接稳定性:绝对别用一次性管道,那样发完消息就直接断开了,一定要用能持续输入的方式(子shell、文件描述符、Expect)。
  • 流量控制:批量发消息时记得加sleep,短时间冲太多消息容易被服务器限流或拒绝。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 07:35:43