#!/bin/bash # 确认(并确保)三个服务开机自启。 # # 用户要求:部署到 Debian 上要能开机自启 —— 随身 WiFi 重启后 # 中转和隧道自己起来,不用人工干预。 set -u echo "===== 1. 当前状态 =====" printf " %-32s %-10s %s\n" "服务" "运行" "开机自启" for s in lanremote-relay lanremote-tunnel lanremote-watchdog.timer; do active=$(systemctl is-active "$s" 2>/dev/null) enabled=$(systemctl is-enabled "$s" 2>/dev/null) printf " %-32s %-10s %s\n" "$s" "$active" "$enabled" done echo echo "===== 2. 缺的补上 =====" for s in lanremote-relay lanremote-tunnel lanremote-watchdog.timer; do enabled=$(systemctl is-enabled "$s" 2>/dev/null) if [ "$enabled" != "enabled" ]; then echo " $s 不是自启($enabled)-> 开启" systemctl enable "$s" 2>&1 | tail -1 | sed 's/^/ /' else echo " $s 已经是自启" fi active=$(systemctl is-active "$s" 2>/dev/null) if [ "$active" != "active" ]; then echo " $s 没在跑 -> 启动" systemctl start "$s" fi done echo echo "===== 3. 复核 =====" printf " %-32s %-10s %s\n" "服务" "运行" "开机自启" ALL_OK=1 for s in lanremote-relay lanremote-tunnel lanremote-watchdog.timer; do active=$(systemctl is-active "$s" 2>/dev/null) enabled=$(systemctl is-enabled "$s" 2>/dev/null) printf " %-32s %-10s %s\n" "$s" "$active" "$enabled" [ "$active" = "active" ] && [ "$enabled" = "enabled" ] || ALL_OK=0 done echo echo "===== 4. 依赖关系(谁先起)=====" for s in lanremote-relay lanremote-tunnel lanremote-watchdog.service; do deps=$(systemctl show "$s" -p After -p Requires 2>/dev/null | tr '\n' ' ' | cut -c1-140) printf " %-28s %s\n" "$s" "$deps" done echo echo "===== 5. 开机流程会拉起哪些 =====" systemctl list-unit-files --state=enabled --no-pager 2>/dev/null \ | grep -E 'lanremote' | sed 's/^/ /' echo echo "===== 6. 重启验证(只看 enabled,不真重启)=====" if [ "$ALL_OK" = "1" ]; then echo " ✓ 三个服务都是 active + enabled" echo " 随身 WiFi 重启后会自己起来:" echo " 1) lanremote-relay 中转服务" echo " 2) lanremote-tunnel Cloudflare 隧道(固定域名 relay.xxmxxs.top)" echo " 3) lanremote-watchdog.timer 每 5 分钟检查隧道,断了自动重启" else echo " ✗ 还有服务没配好" fi echo echo "===== 7. 当前隧道地址 =====" cat /root/lanremote-relay/public_url.txt 2>/dev/null | sed 's/^/ /' echo echo " 公网可达性: HTTP $(timeout 20 curl -4 -s -o /dev/null -w '%{http_code}' -H 'User-Agent: LanRemote/1.4.0' https://relay.xxmxxs.top/v1/health 2>/dev/null)"