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

如何通过Shell脚本(netcat)实现服务器向客户端传输并执行多行代码?

解决Netcat接收多行代码不执行的问题

我明白你的困境了——客户端现在只是把服务器传过来的多行代码原封不动打印出来,根本没让shell去执行它们对吧?这是因为默认情况下nc只是把接收到的数据输出到终端,没有触发执行逻辑,咱们只要把接收的内容“喂”给shell就行,下面给你具体的方案和注意事项:

核心解决方案:将Netcat输出管道到Shell

把客户端的nc命令输出直接传给bash(或者sh,看你系统默认shell),这样接收到的代码就会被自动执行了。

修改你的client.sh,把原来单纯的接收命令改成:

#!/bin/bash
# 替换成你的服务器IP和端口
nc your_server_ip your_port | bash

如果需要支持交互式命令(比如需要用户输入的场景),可以加上-i参数让bash以交互式模式运行:

nc your_server_ip your_port | bash -i

服务器端示例:发送多行代码

确保服务器端的server.sh能正确发送多行脚本,比如用Here Document来组织代码,避免换行符丢失:

#!/bin/bash
# 监听1234端口,发送多行执行代码
cat << 'EOF' | nc -l -p 1234
# 这里写你要执行的多行命令
echo "服务器发来的命令正在执行..."
date
mkdir -p client_test_folder
echo "已在客户端创建文件夹client_test_folder"
EOF

⚠️ 重要安全提醒
这种方式相当于让客户端无条件执行服务器发送的任何代码,风险极高!如果服务器不可信或者传输过程被劫持,恶意代码会直接在客户端运行。建议:

  • 只在完全可信的内网环境中使用
  • 可以给传输的代码添加哈希校验,客户端先验证哈希再执行
  • 限制服务器可发送的命令范围,避免执行高危操作

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 08:06:44