# -*- coding: utf-8 -*- r'''修 deploy.sh 里 watchdog 块被我吃掉的两行。 == 出什么事了 == 我用 heredoc(python -c @"..."@)改 _build/add_monitor_to_deploy.py 的锚点, PowerShell 把里面的引号和 $ 打散了,脚本没改成;而**上一次** (锚点写错的那次)已经把 deploy.sh 改了 —— 那次用的锚点是 systemctl enable lanremote-watchdog.timer ... || true 它把后面两行(start timer + say 状态)连带 `fi` 一起卷进了替换, 结果这两行就没了: systemctl start lanremote-watchdog.timer >/dev/null 2>&1 || true say " 看门狗: $(systemctl is-active lanremote-watchdog.timer 2>&1)" bash -n 仍然通过(语法没错,只是少了两行执行语句), 所以光靠语法检查发现不了 —— 这就是为什么改完还要**读回来核对**。 这个脚本把这两行补回去。 ''' from __future__ import annotations import sys from pathlib import Path ROOT = Path(__file__).resolve().parent.parent DEPLOY = ROOT / "relay" / "deploy.sh" OLD = """ systemctl enable lanremote-watchdog.timer >/dev/null 2>&1 || true fi # ---- 网站监测单元(如果包里有)----""" NEW = """ systemctl enable lanremote-watchdog.timer >/dev/null 2>&1 || true systemctl start lanremote-watchdog.timer >/dev/null 2>&1 || true say " 看门狗: $(systemctl is-active lanremote-watchdog.timer 2>&1)" fi # ---- 网站监测单元(如果包里有)----""" def main() -> int: raw = DEPLOY.read_bytes() bom = raw.startswith(b"\xef\xbb\xbf") text = raw.decode("utf-8-sig") if "systemctl start lanremote-watchdog.timer" in text: print(" · 那两行已经在了") return 0 if OLD not in text: print(" ✗ 找不到锚点,需要人工看一眼") return 1 text = text.replace(OLD, NEW, 1) DEPLOY.write_bytes((b"\xef\xbb\xbf" if bom else b"") + text.encode("utf-8")) print(" ✓ 补回了 start timer 和 say 那两行") return 0 if __name__ == "__main__": sys.exit(main())