#!/bin/bash # 查探针注册为什么失败 set -u BASE=https://relay.xxmxxs.top LOCAL=http://127.0.0.1:8080 UA='LanRemote/1.8.2' STAMP=$(date +%s) DEV="dbg-${STAMP}" CODE=$(printf "%06d" $(( STAMP % 1000000 ))) echo "════════ 1. 直接注册,看返回什么 ════════" echo " deviceId=$DEV code=$CODE" resp=$(curl -s --max-time 30 -X POST "$BASE/v1/agent/register" \ -H 'Content-Type: application/json' -H "User-Agent: $UA" \ -d "{\"deviceId\":\"$DEV\",\"code\":\"$CODE\",\"name\":\"dbg\",\"version\":\"1.8.2\"}") echo " 响应: $resp" echo echo "════════ 2. 本机直连注册 ════════" resp2=$(curl -s --max-time 30 -X POST "$LOCAL/v1/agent/register" \ -H 'Content-Type: application/json' -H "User-Agent: $UA" \ -d "{\"deviceId\":\"${DEV}-local\",\"code\":\"$(printf "%06d" $(( (STAMP+1) % 1000000 )))\",\"name\":\"dbgl\",\"version\":\"1.8.2\"}") echo " 响应: $resp2" echo echo "════════ 3. 用 python3 解析(看是不是解析脚本的问题)════════" echo "$resp" | python3 -c " import sys, json raw = sys.stdin.read() print(' 原始长度:', len(raw)) try: d = json.loads(raw) print(' 解析成功,token =', repr(d.get('token', '(没有 token 字段)'))[:60]) print(' 所有键:', list(d.keys())) except Exception as e: print(' 解析失败:', e) " echo echo "════════ 4. 长测脚本里那段注册代码单独跑一遍 ════════" stamp2=$(date +%s) dev2="l2h-${stamp2}" code2=$(printf "%06d" $(( stamp2 % 1000000 ))) reg=$(curl -s --max-time 30 -X POST "$BASE/v1/agent/register" \ -H 'Content-Type: application/json' -H "User-Agent: $UA" \ -d "{\"deviceId\":\"$dev2\",\"code\":\"$code2\",\"name\":\"l2h\",\"version\":\"1.8.2\"}") echo " reg 原始: $reg" token=$(echo "$reg" | python3 -c "import sys,json; print(json.load(sys.stdin).get('token',''))" 2>/dev/null) echo " token='$token' 长度=${#token}" echo echo "════════ 5. 中转当前的接受策略 ════════" curl -s --max-time 10 "$LOCAL/v1/health" | python3 -m json.tool 2>/dev/null | sed 's/^/ /' echo echo "════════ 6. 中转日志里最近的注册记录 ════════" tail -40 /root/lanremote-relay/relay.log 2>/dev/null | grep -E '注册|register|拒绝' | tail -10 | sed 's/^/ /' echo echo "════════ 7. 清掉测试设备 ════════" KEY=$(cat /root/lanremote-relay/data/admin_key.txt 2>/dev/null) for d in "$DEV" "${DEV}-local" "$dev2"; do curl -s --max-time 15 -X POST "$LOCAL/v1/admin/delete" -H "X-Admin: $KEY" \ -H 'Content-Type: application/json' -d "{\"deviceId\":\"$d\"}" > /dev/null 2>&1 done echo " 已清理"