linux中nc传文件和测端口核心是两端配合:一端监听(nc -l port)、一端连接;测端口用-zv(tcp)或-zuv(udp),传文件用管道,注意启动顺序、端口范围及完整性校验。

Linux 中用 nc 传文件和测端口,核心就两点:一端监听、一端连接,参数选对、顺序别乱。CentOS 7 默认装的是 ncat(nc 是软链接),行为和传统 netcat 略有差异,但常用功能完全兼容。
快速测试 TCP/UDP 端口是否通
用 -z(zero-I/O 模式)+ -v(显示过程)最直接:
- 测单个 TCP 端口:
nc -zv 192.168.1.100 22—— 成功显示succeeded!,失败显示refused或超时 - 测单个 UDP 端口:
nc -zuv 192.168.1.100 53—— UDP 不保证响应,能收到 reply 才算通,多数情况靠服务端主动监听配合验证 - 批量扫端口:
nc -zv 192.168.1.100 80-443或nc -zv 192.168.1.100 22 80 443 3306 - 加超时防卡住:
nc -zvw 2 192.168.1.100 80(2 秒超时)
两台机器间快速传小文件(无加密,局域网适用)
不需要额外服务,一条管道搞定。注意:先起接收端,再发;传输完连接自动断开。
- 接收方(目标机)执行:
nc -l 9999 > received.txt - 发送方(源机)执行:
cat source.txt | nc 192.168.1.100 9999 - 传二进制文件(如 tar 包)也一样:
tar czf - ./mydir | nc 192.168.1.100 9999,接收端用nc -l 9999 | tar xzf - - 端口可换,但别用特权端口(1–1023)除非加
sudo;建议选 1024 以上,比如 5001、8080、9999
传文件时避免常见翻车点
看似简单,但几个细节不注意就传空或中断:
-
别在接收端加
-p:CentOS 7 的ncat不认nc -l -p 9999,直接写nc -l 9999即可;-p是旧版语法,新版已弃用 - 别让发送端先跑:如果接收端没启动,发送命令会立即报错退出,文件一个字节都发不出
-
大文件建议加
-w:比如nc -w 30 192.168.1.100 9999,防止网络抖动导致意外断连 -
验证完整性:传完两边运行
sha256sum received.txt对比哈希值,不依赖文件大小
顺手做一次端口连通性自检(脚本化)
想持续盯一个端口?写个简易循环脚本:
#!/bin/bash HOST="10.0.0.5" PORT=3306 while ! nc -z $HOST $PORT; do echo "$(date): $PORT not ready, retrying..." sleep 2 done echo "$(date): $PORT is up!"
这个脚本会一直试,直到端口响应才退出,适合放在部署流程里等数据库就绪。











