# -*- coding: utf-8 -*- r'''查 /rescue/ 为什么返回 HTTP 000。 000 是 curl 的"没拿到任何响应"。但同一个端口上 /v1/health 是好的、 目录穿越请求也能拿到 404 —— 说明不是端口不通,是**特定路径**出问题。 ''' 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 B=http://127.0.0.1:8080 echo "════ 造一份报告 ════" printf '测试报告\n\n 判断:测试结论\n' > $RELAY/rescue_reports/19700101-000000-demo.txt ls -la $RELAY/rescue_reports/ | sed 's/^/ /' echo echo "════ 对照:几个路径的返回 ════" for p in /v1/health /rescue/19700101-000000-demo.txt /rescue/nonexistent.txt /rescue/; do printf ' %-42s -> %s\n' "$p" "$(curl -s -o /dev/null -w '%{http_code}' --max-time 6 "$B$p")" done echo echo "════ 详细看 /rescue/ 那次请求 ════" curl -sv --max-time 8 "$B/rescue/19700101-000000-demo.txt" 2>&1 | head -25 | sed 's/^/ /' echo echo "════ relay 日志尾部(有没有 Traceback)════" journalctl -u lanremote-relay --no-pager -n 30 2>/dev/null | tail -30 | sed 's/^/ /' echo echo "════ 后台密码文件在不在 ════" ls -la $RELAY/data/admin_password.txt 2>&1 | sed 's/^/ /' echo " (长度 $(wc -c < $RELAY/data/admin_password.txt 2>/dev/null || echo 0))" echo echo "════ 清理 ════" rm -f $RELAY/rescue_reports/19700101-000000-demo.txt ''' 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())