"""Учебная обёртка: по умолчанию печатает событие без HTTP-запроса.""" import json import os import subprocess import sys import urllib.request def notify(payload): if os.environ.get("ONTIK_DRY_RUN", "1") == "1": print(json.dumps(payload, ensure_ascii=False, indent=2)) return key = os.environ["ONTIK_API_KEY"] base = os.environ.get("ONTIK_BASE_URL", "https://app.ontik.ru").rstrip("/") body = json.dumps(payload, ensure_ascii=False).encode("utf-8") request = urllib.request.Request(base + "/v1/events", data=body, headers={"Content-Type": "application/json", "X-Ontik-Key": key}) with urllib.request.urlopen(request, timeout=10) as response: print("Ontik:", response.status) def main(): command = sys.argv[1:] if not command: print("Usage: python backup_watch.py COMMAND [ARGS...]", file=sys.stderr) return 2 try: result = subprocess.run(command, check=False) code = result.returncode except OSError: code = 127 payload = { "event": "Ошибка резервного копирования" if code else "Резервная копия завершена", "meta": {"job": "nightly-backup", "exit_code": code, "result": "failed" if code else "completed"}, } try: notify(payload) except Exception as error: print("Не удалось отправить событие:", type(error).__name__, file=sys.stderr) return code if __name__ == "__main__": sys.exit(main())