本文目录导读:

PowerShell 脚本(Windows)
基础 Ping 测试
# 简单ping测试
$hosts = @("google.com", "baidu.com", "192.168.1.1")
foreach ($host in $hosts) {
Write-Host "测试 $host ..." -ForegroundColor Yellow
$result = Test-Connection -ComputerName $host -Count 3 -Quiet
if ($result) {
Write-Host "$host 连通" -ForegroundColor Green
} else {
Write-Host "$host 不通" -ForegroundColor Red
}
}
综合测试脚本
param(
[string[]]$TargetHosts = @("www.baidu.com", "www.google.com"),
[int]$PingCount = 4,
[int]$TimeoutSec = 5
)
function Test-Network {
param([string]$Host)
Write-Host "`n[$(Get-Date -Format 'HH:mm:ss')] 测试: $Host" -ForegroundColor Cyan
# TCP 端口测试
$tcpResult = Test-NetConnection -ComputerName $Host -Port 80 -WarningAction SilentlyContinue
if ($tcpResult.TcpTestSucceeded) {
Write-Host "✓ TCP 80端口连通" -ForegroundColor Green
} else {
Write-Host "✗ TCP 80端口不通" -ForegroundColor Red
}
# DNS 解析
try {
$dnsResult = Resolve-DnsName $Host -ErrorAction Stop
Write-Host "✓ DNS解析成功: $($dnsResult.IPAddress)" -ForegroundColor Green
} catch {
Write-Host "✗ DNS解析失败" -ForegroundColor Red
}
# Ping 测试
$pingResult = Test-Connection -ComputerName $Host -Count $PingCount -ErrorAction SilentlyContinue
if ($pingResult) {
$avgTime = ($pingResult | Measure-Object -Property ResponseTime -Average).Average
Write-Host "✓ Ping平均延迟: $($avgTime)ms" -ForegroundColor Green
} else {
Write-Host "✗ Ping失败" -ForegroundColor Red
}
}
foreach ($host in $TargetHosts) {
Test-Network -Host $host
}
Bash 脚本(Linux/Unix)
基础连通性测试
#!/bin/bash
# 定义测试主机列表
HOSTS=("8.8.8.8" "google.com" "192.168.1.1" "baidu.com")
PING_COUNT=4
TIMEOUT=5
echo "=== 网络连通性测试开始 $(date) ==="
for host in "${HOSTS[@]}"; do
echo -e "\n测试: $host"
# Ping 测试
if ping -c $PING_COUNT -W $TIMEOUT "$host" > /dev/null 2>&1; then
avg_time=$(ping -c $PING_COUNT -W $TIMEOUT "$host" | tail -1 | awk -F '/' '{print $5}')
echo "✓ Ping成功 | 平均延迟: ${avg_time}ms"
else
echo "✗ Ping失败"
fi
# TCP 端口测试(HTTP)
if timeout $TIMEOUT bash -c "echo >/dev/tcp/$host/80" 2>/dev/null; then
echo "✓ TCP 80端口连通"
else
echo "✗ TCP 80端口不通"
fi
# DNS 解析测试
if nslookup "$host" > /dev/null 2>&1; then
ip_address=$(dig +short "$host" | head -1)
echo "✓ DNS解析成功: ${ip_address:-$host}"
else
echo "✗ DNS解析失败"
fi
done
# 网络接口状态
echo -e "\n=== 网络接口状态 ==="
ip addr show | grep -E "^[0-9]+:|inet "
# 路由信息
echo -e "\n=== 路由信息 ==="
ip route show
echo -e "\n=== 测试完成 $(date) ==="
Python 脚本(跨平台)
#!/usr/bin/env python3
import socket
import subprocess
import platform
import sys
from datetime import datetime
import threading
from queue import Queue
class NetworkTester:
def __init__(self, hosts, timeout=5):
self.hosts = hosts
self.timeout = timeout
self.results = []
def ping_test(self, host):
"""Ping 测试"""
try:
param = '-n' if platform.system().lower() == 'windows' else '-c'
cmd = ['ping', param, '4', '-W', str(self.timeout), host]
result = subprocess.run(cmd, capture_output=True, text=True, timeout=self.timeout)
return result.returncode == 0
except:
return False
def tcp_test(self, host, port=80):
"""TCP 端口测试"""
try:
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.settimeout(self.timeout)
result = sock.connect_ex((host, port))
sock.close()
return result == 0
except:
return False
def dns_test(self, host):
"""DNS 解析测试"""
try:
socket.gethostbyname(host)
return True
except:
return False
def run_test(self, host):
"""执行单个主机的测试"""
timestamp = datetime.now().strftime('%H:%M:%S')
print(f"\n[{timestamp}] 测试: {host}")
print("-" * 50)
# Ping 测试
if self.ping_test(host):
print("✓ Ping 测试通过")
else:
print("✗ Ping 测试失败")
# TCP 测试
if self.tcp_test(host, 80):
print("✓ TCP 80端口测试通过")
else:
print("✗ TCP 80端口测试失败")
# DNS 测试
if self.dns_test(host):
print("✓ DNS 解析成功")
else:
print("✗ DNS 解析失败")
def run_all(self):
print(f"=== 网络连通性测试开始 {datetime.now().strftime('%Y-%m-%d %H:%M:%S')} ===")
print(f"测试目标: {', '.join(self.hosts)}")
print("=" * 50)
for host in self.hosts:
self.run_test(host)
print("\n=== 测试完成 ===")
# 使用示例
if __name__ == "__main__":
hosts = ["8.8.8.8", "www.baidu.com", "www.google.com", "192.168.1.1"]
tester = NetworkTester(hosts, timeout=5)
tester.run_all()
高级功能脚本
带日志和告警的测试脚本(Bash)
#!/bin/bash
# 网络监控脚本
LOGFILE="/var/log/network_test.log"
WEBHOOK_URL="https://your-webhook-url"
THRESHOLD_LATENCY=100 # 延迟阈值ms
log() {
echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1" | tee -a "$LOGFILE"
}
send_alert() {
local message="$1"
curl -X POST -H "Content-Type: application/json" \
-d "{\"text\": \"NETWORK ALERT: $message\"}" \
"$WEBHOOK_URL" 2>/dev/null
}
test_connectivity() {
local host="$1"
local result=$(ping -c 3 -W 3 "$host" 2>&1)
if [ $? -eq 0 ]; then
local latency=$(echo "$result" | tail -1 | awk -F '/' '{print $5}')
log "OK: $host latency=${latency}ms"
# 延迟告警
if (( $(echo "$latency > $THRESHOLD_LATENCY" | bc -l) )); then
send_alert "高延迟: $host ${latency}ms"
fi
else
log "FAIL: $host 连接失败"
send_alert "连接中断: $host"
fi
}
# 监控主循环
while true; do
echo "=== 定时检查 $(date) ==="
for host in "8.8.8.8" "google.com"; do
test_connectivity "$host"
done
sleep 60 # 每分钟检查一次
done
多线程测试(Python)
import concurrent.futures
import time
def test_host(host):
"""并发测试单个主机"""
start_time = time.time()
try:
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.settimeout(3)
result = sock.connect_ex((host, 80))
sock.close()
latency = (time.time() - start_time) * 1000
if result == 0:
return f"{host}: 成功 ({latency:.1f}ms)"
else:
return f"{host}: 失败"
except:
return f"{host}: 超时"
def parallel_test(hosts):
"""并行测试多个主机"""
with concurrent.futures.ThreadPoolExecutor(max_workers=10) as executor:
results = list(executor.map(test_host, hosts))
for result in results:
print(result)
# 使用
hosts = [f"192.168.1.{i}" for i in range(1, 255)]
parallel_test(hosts)
使用方法
一键测试脚本(Bash)
#!/bin/bash
# 自动检测并执行网络测试
echo "==================================="
echo " 网络连通性测试工具"
echo "==================================="
# 检查权限
if [ "$EUID" -ne 0 ]; then
echo "请以root权限运行"
exit 1
fi
# 检测系统类型
OS=$(uname -s)
echo "系统: $OS"
case $OS in
Linux)
echo "使用Linux网络工具"
command -v ping >/dev/null 2>&1 || { echo "需要安装ping工具"; exit 1; }
;;
Darwin)
echo "使用macOS网络工具"
;;
*)
echo "未知系统"
exit 1
;;
esac
# 执行测试
bash network_test.sh
使用建议
- 选择合适的脚本:根据操作系统和使用场景选择合适的脚本语言
- 定时任务:使用 crontab 或计划任务定期执行
- 日志记录:保存测试结果到日志文件
- 告警通知:配置邮件或消息推送告警
- 参数化:允许用户自定义测试参数
- 错误处理:添加适当的错误处理和重试机制
这些脚本可以作为基础模板,根据实际需求进行修改和扩展。
版权声明: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直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播