$ ping -c 4 www.baidu.com PING www.a.shifen.com (110.242.68.3) 56(84) bytes of data. 64 bytes from 110.242.68.3: icmp_seq=1 ttl=52 time=24.5 ms 64 bytes from 110.242.68.3: icmp_seq=2 ttl=52 time=24.3 ms 64 bytes from 110.242.68.3: icmp_seq=3 ttl=52 time=24.2 ms 64 bytes from 110.242.68.3: icmp_seq=4 ttl=52 time=24.4 ms
--- www.a.shifen.com ping statistics --- 4 packets transmitted, 4 received, 0% packet loss, time 3004ms rtt min/avg/max/mdev = 24.200/24.350/24.500/0.119 ms
echo"=== 批量Ping测试 ===" for host in"${HOSTS[@]}"; do echo"Ping $host..." if ping -c 1 -W 2 "$host" > /dev/null 2>&1; then echo" ✓ $host is UP" else echo" ✗ $host is DOWN" fi done
三、traceroute路径追踪
3.1 traceroute基础使用
traceroute命令
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
# 基本用法 traceroute www.baidu.com
# 指定最大跳数 traceroute -m 15 www.baidu.com
# 指定第一个TTL值 traceroute -f 3 www.baidu.com
# 指定超时时间 traceroute -w 5 www.baidu.com
# 显示IP地址 traceroute -n www.baidu.com
# 指定数据包大小 traceroute -p 1500 www.baidu.com
3.2 traceroute结果分析
正常traceroute示例
1 2 3 4 5 6 7 8 9 10 11 12 13 14
$ traceroute www.baidu.com traceroute to www.a.shifen.com (110.242.68.3), 30 hops max, 60 byte packets 1 gateway (192.168.1.1) 0.358 ms 0.452 ms 0.493 ms 2 10.10.10.1 (10.10.10.1) 5.234 ms 5.345 ms 5.456 ms 3 20.20.20.1 (20.20.20.1) 12.345 ms 12.456 ms 12.567 ms 4 * * * # 中间节点不响应(正常) 5 30.30.30.1 (30.30.30.1) 24.123 ms 24.234 ms 24.345 ms 6 ...... 12 www.a.shifen.com (110.242.68.3) 24.500 ms 24.600 ms 24.700 ms
# 分析每个节点 echo"" echo"节点延迟分析:" for ip in$IPS; do if [[ "$ip" != *.*.*.* ]]; then continue fi avg_time=$(grep "$ip""$LOG_FILE" | grep -oE '[0-9]+.[0-9]+' | awk '{sum+=$1; count++} END {print sum/count}') if [[ -n "$avg_time" ]]; then printf" %s: %.2f ms\n""$ip""$avg_time" fi done
# 1. 检查网络接口 echo"1. 网络接口检查:" | tee -a "$LOG_FILE" ip addr show | tee -a "$LOG_FILE" echo""
# 2. 检查路由表 echo"2. 路由表检查:" | tee -a "$LOG_FILE" ip route show | tee -a "$LOG_FILE" echo""
# 3. 检查ARP表 echo"3. ARP表检查:" | tee -a "$LOG_FILE" arp -a | tee -a "$LOG_FILE" echo""
# 4. Ping测试 echo"4. Ping连通性测试:" | tee -a "$LOG_FILE" ping -c 4 "$TARGET" | tee -a "$LOG_FILE" echo""
# 5. Traceroute追踪 echo"5. Traceroute路径追踪:" | tee -a "$LOG_FILE" traceroute -n "$TARGET" | tee -a "$LOG_FILE" echo""
# 6. DNS查询 echo"6. DNS查询测试:" | tee -a "$LOG_FILE" dig +short "$TARGET" | tee -a "$LOG_FILE" echo""
# 7. 端口测试 echo"7. 端口测试:" | tee -a "$LOG_FILE" for port in 80 443 22; do echo" 测试端口 $port:" nc -zv -w 3 "$TARGET""$port" 2>&1 | tee -a "$LOG_FILE" done echo""