答案是:该脚本通过 ping、curl、nc 等命令分层检测网络连通性,涵盖网关/dns/外网地址可达性、关键端口开放性、本地服务状态及接口/路由/dns 配置快照,并以彩色输出与时间戳日志记录结果。

用 Bash 写一个一键检测网络连通状态的巡检脚本,核心是组合 ping、curl、ss 或 nc 等命令,加上清晰的状态反馈和日志记录。不需要复杂框架,重点是稳定、可读、易维护。
基础连通性检测(目标 IP + 域名)
先确认能否到达网关、DNS 服务器和关键外网地址(如 8.8.8.8、www.baidu.com),避免只测 DNS 而忽略路由问题:
- 用
ping -c 2 -W 3控制次数和超时,避免卡住; - 对域名额外加
curl -I --connect-timeout 5 -s测 HTTP 可达性(绕过 ICMP 屏蔽场景); - 区分失败原因:超时(网络不通)、无响应(目标关机/防火墙拦截)、解析失败(DNS 异常)。
关键端口与服务可用性检查
光通 ping 不代表业务可用,需验证常用端口(如 DNS 53、HTTP 80、HTTPS 443)是否开放:
- 用
timeout 3 nc -zv 8.8.8.8 53 2>/dev/null检查 TCP 连通性(nc需提前安装); - 对本地服务(如 SSH 22、Nginx 80)同样检测,快速定位是网络层还是本机服务问题;
- 避免用
telnet—— 它在多数发行版默认未安装,且输出不易解析。
网络接口与路由状态快照
连通失败时,需要上下文辅助排查:
宝塔Linux面板11.8.1为官网当前正式版,新增AI建站能力并经过宝塔网站工程师深度调教,开放自定义AI功能API,同时对WAF进行界面重构和深度优化,提升拦截能力与运维效率。
- 运行
ip -br a | grep -E 'UP|DOWN'查看网卡是否 up、是否有 IP; - 执行
ip r | head -5显示主路由表,确认默认网关是否存在; - 加
cat /etc/resolv.conf输出当前 DNS 配置,方便对比解析异常。
整合成可执行脚本并支持日志与颜色提示
把上述逻辑封装为带颜色输出和时间戳的日志脚本,例如保存为 netcheck.sh:
使用方式: chmod +x netcheck.sh && ./netcheck.sh
关键技巧: 用 $? 判断上条命令退出码;用 \033[32m 等 ANSI 码着色;结果自动追加到 netcheck_$(date +%F).log。










