本文目录导读:

- 方法一:Ping 外网地址(最基础)
- 方法二:检测无线接口状态(更准确)
- 方法三:综合检测(网络质量 & 速度)
- 方法四:针对 macOS 的特殊方法
- 进阶:使用
curl或wget模拟 HTTP 请求 - 推荐的最佳实践组合
要检测无线网络是否正常,脚本通常需要从两个层面进行判断:网络连通性(是否能访问外网)和 网络质量(延迟、丢包率)。
以下提供几种适用于常见操作系统(Windows、Linux/macOS)的脚本方法,从简单到复杂。
Ping 外网地址(最基础)
通过 ping 一个稳定的公共 DNS(如 114.114.114.114 或 8.8.8.8)来判断网络是否通。
Bash 脚本 (Linux/macOS)
#!/bin/bash
TARGET="114.114.114.114"
COUNT=3
# -c: 发送次数, -W: 超时时间
if ping -c $COUNT -W 2 $TARGET > /dev/null 2>&1; then
echo "网络正常: 可以访问 $TARGET"
else
echo "网络异常: 无法访问 $TARGET"
fi
批处理脚本 (Windows CMD)
@echo off
set TARGET=114.114.114.114
ping -n 3 %TARGET% | find "TTL" > nul
if %errorlevel%==0 (
echo 网络正常
) else (
echo 网络异常
)
PowerShell 脚本 (Windows)
$target = "114.114.114.114"
if (Test-Connection -ComputerName $target -Count 2 -Quiet) {
Write-Host "网络正常" -ForegroundColor Green
} else {
Write-Host "网络异常" -ForegroundColor Red
}
缺点:只能判断是否能路由到该 IP,但无法判断无线信号强度或 DHCP 是否正确。
检测无线接口状态(更准确)
先确保无线网卡已连接(有 IP),再测试连通性。
Bash 脚本 (Linux)
#!/bin/bash
# 1. 检查无线接口是否关联到热点
WIFI_INTERFACE=$(iw dev | awk '$1=="Interface"{print $2}')
SSID=$(iw dev $WIFI_INTERFACE link | grep -i "SSID" | awk '{print $2}')
if [ -z "$SSID" ]; then
echo "无线未连接: 未关联到任何 SSID"
exit 1
fi
# 2. 检查是否拿到 IP(DHCP 状态)
IP=$(ip -4 addr show $WIFI_INTERFACE | grep -oP '(?<=inet\s)\d+(\.\d+){3}')
if [ -z "$IP" ]; then
echo "无线已连接但 DHCP 失败: 没有 IP 地址"
exit 1
fi
# 3. 测试网关连通性(比直接 ping 外网更优先)
GATEWAY=$(ip route | grep default | grep $WIFI_INTERFACE | awk '{print $3}')
if ping -c 1 -W 1 $GATEWAY > /dev/null 2>&1; then
echo "无线网络正常: SSID=$SSID, IP=$IP, 网关可达"
else
echo "无线网络异常: 网关不可达"
exit 1
fi
PowerShell (Windows)
# 获取无线网卡状态
$wifi = Get-NetAdapter | Where-Object {$_.InterfaceDescription -like "*Wireless*" -or $_.Name -like "*Wi-Fi*"}
if (-not $wifi) {
Write-Host "未找到无线网卡" -ForegroundColor Red
exit 1
}
# 检查是否连接
if ($wifi.OperationalStatus -ne "Up") {
Write-Host "无线网卡未启用或未连接" -ForegroundColor Red
exit 1
}
# 检查 IP 地址
$ipConfig = Get-NetIPAddress -InterfaceIndex $wifi.ifIndex -AddressFamily IPv4 -ErrorAction SilentlyContinue
if (-not $ipConfig) {
Write-Host "无线已连接但无 IPv4 地址(DHCP 失败)" -ForegroundColor Red
exit 1
}
# 测试网关
$gateway = (Get-NetRoute -InterfaceIndex $wifi.ifIndex -DestinationPrefix "0.0.0.0/0").NextHop
if (Test-Connection -ComputerName $gateway -Count 1 -Quiet) {
Write-Host "无线网络正常: SSID=$($wifi.Name), IP=$($ipConfig.IPAddress)" -ForegroundColor Green
} else {
Write-Host "无线网络异常: 网关 $gateway 不可达" -ForegroundColor Red
}
综合检测(网络质量 & 速度)
除了连通性,还可以检测延迟和丢包率。
Bash 脚本 (Linux)
#!/bin/bash
TARGET="8.8.8.8"
PING_COUNT=5
# 计算丢包率和平均延迟
RESULT=$(ping -c $PING_COUNT $TARGET 2>&1 | tail -1)
# 提取丢包率(适应不同语言环境)
LOSS=$(echo "$RESULT" | grep -oP '\d+(?=% packet loss)')
if [ -z "$LOSS" ]; then
LOSS=$(echo "$RESULT" | grep -oP '\d+(?=% 丢包)')
fi
# 提取平均延迟
AVG_LATENCY=$(echo "$RESULT" | grep -oP '(?<=min/avg/max/mdev = )[^/]*' | cut -d'/' -f2)
if [ -z "$AVG_LATENCY" ]; then
AVG_LATENCY=$(echo "$RESULT" | grep -oP '(?<=平均 = )[^ms]*')
fi
echo "丢包率: ${LOSS:-100}%"
echo "平均延迟: ${AVG_LATENCY:-N/A} ms"
# 判断标准:丢包率 >= 20% 或延迟 > 500ms 视为异常
if [ "$LOSS" -ge 20 ] 2>/dev/null || [ "$AVG_LATENCY" -gt 500 ] 2>/dev/null; then
echo "无线网络质量差或异常"
else
echo "无线网络质量正常"
fi
针对 macOS 的特殊方法
macOS 使用 airport 工具查看无线状态。
#!/bin/bash
# 获取无线信息
AIRPORT_INFO=$(/System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport -I)
# 提取 SSID、信号强度(RSSI)、噪声、信道
SSID=$(echo "$AIRPORT_INFO" | awk -F': ' '/ SSID/{print $2}')
RSSI=$(echo "$AIRPORT_INFO" | awk -F': ' '/ agrCtlRSSI/{print $2}')
NOISE=$(echo "$AIRPORT_INFO" | awk -F': ' '/ agrCtlNoise/{print $2}')
if [ -z "$SSID" ]; then
echo "未连接到任何无线网络"
exit 1
fi
# 计算信号质量(RSSI 通常在 -30 dBm 到 -90 dBm)
if [ "$RSSI" -le -80 ]; then
QUALITY="差"
elif [ "$RSSI" -le -65 ]; then
QUALITY="一般"
else
QUALITY="好"
fi
echo "连接 SSID: $SSID"
echo "信号强度: ${RSSI} dBm (${QUALITY})"
echo "噪声: ${NOISE} dBm"
# 检查网络连通性
ping -c 2 8.8.8.8 > /dev/null 2>&1 && echo "网络连通: OK" || echo "网络连通: FAIL"
进阶:使用 curl 或 wget 模拟 HTTP 请求
有些网络环境(如酒店/校园网)需要 Portal 认证,Ping 可能通但无法上网,可以通过请求一个明确的 URL 并检查状态码:
# 检测是否被重定向到认证页面
HTTP_CODE=$(curl -o /dev/null -s -w "%{http_code}" --connect-timeout 5 http://www.gstatic.com/generate_204)
if [ "$HTTP_CODE" -eq 204 ] || [ "$HTTP_CODE" -eq 200 ]; then
echo "可正常访问互联网"
elif [ "$HTTP_CODE" -eq 302 ] || [ "$HTTP_CODE" -eq 301 ]; then
echo "需要 Portal 认证"
else
echo "HTTP 异常,状态码: $HTTP_CODE"
fi
推荐的最佳实践组合
| 检测层级 | 脚本推荐 | |
|---|---|---|
| 物理层 | 无线网卡是否连接 SSID | Linux 用 iw,Windows 用 netsh wlan,macOS 用 airport -I |
| 网络层 | 是否有 IPv4 地址 | ip addr / ipconfig / ifconfig |
| 连通性 | 网关是否可达 | Ping 默认网关 |
| 互联网 | 外网 DNS 是否可达 | Ping 114.114.114.114 |
| 应用层 | HTTP 请求是否正常 | curl 请求 204 页面 |
如果需要长期监控,建议将脚本加入 cron(Linux) 或 Task Scheduler(Windows),并结合日志记录与告警。
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播