#!/bin/bash # 验证 watchdog 文件完整性 + timer 正常 + 那个语法错误是什么时候的 set -u RELAY=/root/lanremote-relay echo "════════ 1. 文件完整性 ════════" echo " 行数: $(wc -l < $RELAY/watchdog.sh)" echo " 修改时间: $(stat -c '%y' $RELAY/watchdog.sh)" echo " md5: $(md5sum $RELAY/watchdog.sh | awk '{print $1}')" echo " 语法: $(bash -n $RELAY/watchdog.sh 2>&1 && echo OK || echo '有错')" echo echo "════════ 2. 关键片段(190-200 行,之前报错的位置)════════" sed -n '185,205p' "$RELAY/watchdog.sh" | cat -n | sed 's/^/ /' echo echo "════════ 3. 用 shellcheck 语义检查(如果有)════════" if command -v shellcheck > /dev/null 2>&1; then shellcheck -S error "$RELAY/watchdog.sh" 2>&1 | head -20 | sed 's/^/ /' else echo " (没装 shellcheck)" # 退而求其次:用 bash 自己的解析器跑一遍 bash -n "$RELAY/watchdog.sh" && echo " bash -n 通过" fi echo echo "════════ 4. timer 状态 ════════" systemctl list-timers lanremote-watchdog.timer --no-pager 2>/dev/null | head -3 | sed 's/^/ /' echo " 最近 3 次执行(journal):" journalctl -u lanremote-watchdog.service --since '30 minutes ago' --no-pager 2>/dev/null \ | tail -8 | sed 's/^/ /' echo echo "════════ 5. watchdog 日志里有没有语法错误(最近)════════" grep -n '语法错误\|unexpected\|未预期' "$RELAY/watchdog.log" 2>/dev/null | tail -5 | sed 's/^/ /' || echo " 没有" echo echo "════════ 6. 备份文件里哪个是坏的 ════════" for f in $RELAY/watchdog.sh.bak.*; do [ -f "$f" ] || continue ok=$(bash -n "$f" 2>&1 && echo OK || echo BAD) printf " %-60s %s\n" "$(basename "$f")" "$ok" done echo echo "════════ 7. 各备份的行数和 THRESHOLD ════════" for f in $RELAY/watchdog.sh.bak.*; do [ -f "$f" ] || continue printf " %-58s %3s 行 %s\n" "$(basename "$f")" "$(wc -l < "$f")" \ "$(grep -E '^THRESHOLD' "$f" | tr '\n' ' ')" done echo echo "════════ 8. 现在连跑 3 次预演,确认稳定 ════════" for i in 1 2 3; do out=$(DRY_RUN=1 bash "$RELAY/watchdog.sh" 2>&1) echo " 第 $i 次: ${out:-(无输出=正常)}" sleep 2 done echo echo "════════ 9. 长测进度 ════════" echo " 健康样本: $(wc -l < /root/long2h_health.tsv 2>/dev/null || echo 0)" echo " 轮询: $(wc -l < /root/rp_poll30.tsv 2>/dev/null || echo 0) / 30" echo " 最新健康记录:" tail -3 /root/long2h_health.tsv 2>/dev/null | sed 's/^/ /' echo " 连接数最新:" tail -3 /root/long2h_conns.tsv 2>/dev/null | sed 's/^/ /'