From d29c0392ed6c8873b60262e7c10724f20c695254 Mon Sep 17 00:00:00 2001 From: Mo Krautwald Date: Wed, 26 Nov 2025 15:43:08 +0100 Subject: [PATCH] scat: add systemd watchdog support via systemd-notify cli --- src/scat/writers/pcapwriter.py | 2 ++ src/scat/writers/rawwriter.py | 2 ++ src/scat/writers/socketwriter.py | 2 ++ src/scat/writers/systemd_notify.py | 4 ++++ 4 files changed, 10 insertions(+) create mode 100644 src/scat/writers/systemd_notify.py diff --git a/src/scat/writers/pcapwriter.py b/src/scat/writers/pcapwriter.py index 4e04f1a..a6e470d 100644 --- a/src/scat/writers/pcapwriter.py +++ b/src/scat/writers/pcapwriter.py @@ -5,6 +5,7 @@ import struct from scat.writers.abstractwriter import AbstractWriter +from scat.writers.systemd_notify import systemd_notify_watchdog_alive class PcapWriter(AbstractWriter): def __init__(self, filename: str, port_cp: int = 4729, port_up: int = 47290): @@ -66,6 +67,7 @@ def write_pkt(self, sock_content: bytes, port: int, radio_id: int=0, ts: datetim self.ip_id = 0 def write_cp(self, sock_content: bytes, radio_id: int=0, ts: datetime.datetime=datetime.datetime.now()): + systemd_notify_watchdog_alive() self.write_pkt(sock_content, self.port_cp, radio_id, ts) def write_up(self, sock_content: bytes, radio_id: int=0, ts: datetime.datetime=datetime.datetime.now()): diff --git a/src/scat/writers/rawwriter.py b/src/scat/writers/rawwriter.py index 3eec65a..5842b4c 100644 --- a/src/scat/writers/rawwriter.py +++ b/src/scat/writers/rawwriter.py @@ -2,6 +2,7 @@ # coding: utf8 from scat.writers.abstractwriter import AbstractWriter +from scat.writers.systemd_notify import systemd_notify_watchdog_alive class RawWriter(AbstractWriter): def __init__(self, fname: str, header: bytes=b'', trailer: bytes=b''): @@ -13,6 +14,7 @@ def __enter__(self): return self def write_cp(self, sock_content: bytes, radio_id: int=0, ts: None = None): + systemd_notify_watchdog_alive() self.raw_file.write(sock_content) def write_up(self, sock_content: bytes, radio_id: int=0, ts: None = None): diff --git a/src/scat/writers/socketwriter.py b/src/scat/writers/socketwriter.py index 5a6a9b0..1e4dd4b 100644 --- a/src/scat/writers/socketwriter.py +++ b/src/scat/writers/socketwriter.py @@ -5,6 +5,7 @@ import struct from scat.writers.abstractwriter import AbstractWriter +from scat.writers.systemd_notify import systemd_notify_watchdog_alive class SocketWriter(AbstractWriter): def __init__(self, base_address: str, port_cp: int = 4729, port_up: int = 47290): @@ -21,6 +22,7 @@ def __enter__(self): return self def write_cp(self, sock_content: bytes, radio_id: int=0, ts: None = None): + systemd_notify_watchdog_alive() if radio_id <= 0: dest_address = self.base_address else: diff --git a/src/scat/writers/systemd_notify.py b/src/scat/writers/systemd_notify.py new file mode 100644 index 0000000..421adad --- /dev/null +++ b/src/scat/writers/systemd_notify.py @@ -0,0 +1,4 @@ +import subprocess + +def systemd_notify_watchdog_alive(): + subprocess.run(["systemd-notify", "WATCHDOG=1"], check=True)