# -*- coding: utf-8 -*- r'''查后台「抢救报告」分区为什么不显示。 可能原因: 1. 后台页要登录,curl 直接拿是登录页(那 0 次是正常的,得带 cookie) 2. relay.py 没真正重新加载(旧进程还在) 3. 模板参数没传进去 一条条排除。 ''' from __future__ import annotations import sys from pathlib import Path ROOT = Path(__file__).resolve().parent.parent sys.path.insert(0, str(ROOT / "_build")) from devssh import run # noqa: E402 REMOTE = r''' RELAY=/root/lanremote-relay echo "════ 1. 直接 curl 后台页,看返回的是什么 ════" curl -s --max-time 8 -D- http://127.0.0.1:8080/zhongzhuanzhan -o /tmp/adm.html 2>&1 | head -8 echo " --- 页面大小: $(wc -c < /tmp/adm.html) 字节 ---" echo " --- 前 3 行 ---" head -3 /tmp/adm.html | sed 's/^/ /' echo " --- 含关键词统计 ---" for k in 登录 密码 password 抢救报告 下载区 设备; do printf ' %-12s %s\n' "$k" "$(grep -c "$k" /tmp/adm.html 2>/dev/null)" done echo echo "════ 2. relay.py 里到底有没有 rescue_fn ════" grep -n 'rescue_fn' $RELAY/relay.py | head -5 | sed 's/^/ /' echo " admin.py 里 _rescue_rows:" grep -n 'def _rescue_rows\|def render_admin' $RELAY/admin.py | head -4 | sed 's/^/ /' echo echo "════ 3. 进程是什么时候起的(比文件新还是旧)════" ps -o pid,lstart,cmd -p $(systemctl show -p MainPID --value lanremote-relay) 2>/dev/null | sed 's/^/ /' echo " relay.py 修改时间: $(stat -c '%y' $RELAY/relay.py)" echo " admin.py 修改时间: $(stat -c '%y' $RELAY/admin.py)" echo echo "════ 4. 无登录直接调 render_admin 看看(绕过 HTTP)════" cd $RELAY && python3 -c " import admin html = admin.render_admin({'version':'2.0.0','uptimeSeconds':1,'devices':[],'allowNew':True}, 'https://x','/zhongzhuanzhan',0, lambda: [], rescue_fn=lambda: [{'name':'20261008-120000.txt','size':1234, 'mtime':1791400000, 'summary':'测试摘要'}] ) print(' 渲染长度:', len(html)) print(' 含抢救报告:', '抢救报告' in html) print(' 含测试摘要:', '测试摘要' in html) print(' 含下载链接:', '/rescue/20261008-120000.txt' in html) " 2>&1 | sed 's/^/ /' ''' def main() -> int: out = run(REMOTE, timeout=180) text = out[1] if isinstance(out, tuple) else str(out) print(text) return 0 if __name__ == "__main__": sys.exit(main())