#!/bin/bash # win-ci VM 화면 스냅샷. QMP screendump 로 찍는다. # 사용법: ./shot.sh [출력경로.png] set -euo pipefail OUT="${1:-/home/claude/EJClaw/data/attachments/generated/win-ci-$(date +%H%M%S).png}" mkdir -p "$(dirname "$OUT")" python3 - "$OUT" <<'PY' import json, socket, sys, time out = sys.argv[1] s = socket.socket(socket.AF_UNIX) s.settimeout(20) s.connect("/home/claude/win-ci/qmp.sock") f = s.makefile("rwb") f.readline() # greeting def cmd(o): f.write((json.dumps(o) + "\n").encode()); f.flush() while True: line = f.readline() if not line: raise SystemExit("qmp closed") m = json.loads(line) if "return" in m or "error" in m: return m cmd({"execute": "qmp_capabilities"}) r = cmd({"execute": "screendump", "arguments": {"filename": out, "format": "png"}}) if "error" in r: # 구버전 qemu 는 format 인자를 모른다 -> ppm 으로 받는다 r = cmd({"execute": "screendump", "arguments": {"filename": out + ".ppm"}}) print(json.dumps(r)) else: print("ok", out) PY ls -l "$OUT"* 2>/dev/null