Linux中验证远程连接应优先用nc -zv(退出码0=连通,1=失败),telnet退出码不可靠(均返回1),nmap严谨但低效,curl/wget适用于HTTP层检测而非端口探测。

Linux 中验证远程连接命令的执行状态码,核心是理解不同工具返回退出码(exit code)的实际含义,并避免误判。状态码本身不直接说明“网络通不通”或“服务好不好”,而是反映该命令在当前上下文中的执行结果。
telnet 的退出码不可靠,慎用于自动化判断
telnet 没有标准化的退出码语义:
- 连接被拒绝(Connection refused)→ 返回 1
- 超时(Connection timed out / No route to host)→ 通常也返回 1
- 成功连上 → 返回 0,但连上后立刻断开(如 HTTP 服务不支持裸 telnet)仍算 0
也就是说,仅靠 exit code 无法区分“服务没启”和“中间网络不通”。它适合人工快速试探,不适合脚本判断。
nc(netcat)是更合适的选择,-zv 模式退出码明确
推荐使用 nc -zv -w 3 host port,其中:
- -z:零 I/O 模式,只探测不交互
- -v:显示详细信息(便于调试)
- -w 3:3 秒超时(防止卡死)
退出码规则清晰:
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
- 0 → TCP 连接成功建立(三次握手完成)
- 1 → 超时、拒绝、主机不可达等任意失败场景
可直接用于条件判断:if nc -z -w 2 example.com 443; then echo "HTTPS port is reachable"; else echo "Check network or service"; fi
nmap 的退出码最严谨,但不适合日常连通性检查
nmap 默认扫描模式(如 nmap -p 22 example.com)的退出码含义如下:
- 0 → 扫描完成,至少有一个端口状态为 open 或 closed(非 filtered)
- 1 → 扫描失败(权限不足、目标不可达、参数错误等)
- 2 → 用户中断(Ctrl+C)
注意:nmap 不以“单个端口是否通”为唯一目标,它的重点是端口状态分类(open/filtered/closed)。若仅需快速验证连通性,它启动慢、依赖 root 权限、输出冗长,性价比低。
curl/wget 更适合验证应用层可用性,而非纯端口连通
它们的退出码反映的是 HTTP 层行为:
-
curl -f -s -o /dev/null http://example.com:-f 表示失败时返回非 0(如 22 表示 HTTP 错误码 ≥ 400) -
wget --spider -q http://example.com:成功返回 0;DNS 失败、连接超时、HTTP 4xx/5xx 均返回非 0(通常是 4、5、6、7、8)
这类命令能告诉你“网页能否正常响应”,但不能替代端口级探测——比如 Web 服务进程崩溃了,端口可能还开着(监听中),但 curl 会超时或报错。

















