#!/bin/bash # start_24h_stress.sh — 24h 畸形包压测启动器 # 用法: ./start_24h_stress.sh # # 特性: # - 等待穿透隧道就绪(最长 5 分钟) # - 就绪后自动启动压测 # - 自动将结果输出到日志文件 TARGET_HOST="${1:-127.0.0.1}" TARGET_PORT="${2:-5020}" COUNT="${3:-864000}" INTERVAL="${4:-0.1}" LOG_FILE="/tmp/stress_24h_$(date +%Y%m%d_%H%M%S).log" echo "═══════════════════════════════════════════════" echo " 24H 畸形包压测启动器" echo " 目标: ${TARGET_HOST}:${TARGET_PORT}" echo " 次数: ${COUNT} 次 @ ${INTERVAL}s 间隔" echo " 日志: ${LOG_FILE}" echo "═══════════════════════════════════════════════" echo "" # ── 等待穿透隧道就绪 ── echo "⏳ 等待穿透隧道就绪..." for i in $(seq 1 60); do if (echo > /dev/tcp/${TARGET_HOST}/${TARGET_PORT}) 2>/dev/null; then echo "✅ 隧道已就绪(第 ${i}s 检测到)" break fi if [ "$i" -eq 60 ]; then echo "❌ 等待超时(5分钟),请检查 frp 链路" echo " → 确认 Windows 端 frpc 已启动" echo " → 确认 server_addr/token 配置正确" exit 1 fi sleep 5 done echo "" echo "🚀 开始 ${COUNT} 次畸形包注入测试" echo " 预计完成时间: $(date -d "+$((COUNT * $(echo $INTERVAL | awk '{print $1+0.05}')))" '+%H:%M 明天')" echo "" # ── 启动压测 ── cd ~/.agents/knowledge /opt/stm32-tools/bin/python3 inject_deformed_packet.py \ --host "${TARGET_HOST}" \ --port "${TARGET_PORT}" \ --mode all \ --count "${COUNT}" \ --interval "${INTERVAL}" 2>&1 | tee "${LOG_FILE}" SCRIPT_EXIT=$? if [ $SCRIPT_EXIT -eq 0 ]; then echo "" echo "✅ 压测完成!日志已保存: ${LOG_FILE}" else echo "" echo "❌ 压测异常退出 (exit=${SCRIPT_EXIT})" fi exit $SCRIPT_EXIT