#!/usr/bin/env python3 import os import time import subprocess import json import hswro UNIT_STATUS_ALLOWED_LINES = ["Active:", "Tasks:", "Memory:", "CPU:"] def sizeof_fmt(num, suffix="B"): for unit in ("", "Ki", "Mi", "Gi", "Ti", "Pi", "Ei", "Zi"): if abs(num) < 1024.0: return f"{num:3.1f}{unit}{suffix}" num /= 1024.0 return f"{num:.1f}Yi{suffix}" def systemd_unit_status(unit_name: str): unit_status_raw = subprocess.run(["systemctl", "status", unit_name], capture_output=True) for allowed in UNIT_STATUS_ALLOWED_LINES: for line in unit_status_raw.stdout.splitlines(): line = line.decode('utf-8') if allowed in line: print(line) def get_temp(): with open("/sys/class/thermal/thermal_zone0/temp", "r") as f: t = f.read() t = float(t) / 1000 print(f" CPU Temp: {t:.1f}°C") status_raw = subprocess.run(["/home/reticulum/venv/bin/rnstatus", "-j"], capture_output=True) status = json.loads(status_raw.stdout) hswro.header("Status") get_temp() print(subprocess.run(["uptime"], capture_output=True).stdout.decode('utf-8')) print("> Service status") print(">> rnst status") systemd_unit_status("rnsd") print(">> nomadnet status") systemd_unit_status("nomadnet") print("> Interfaces") for i in status['interfaces']: print(">> ", i['short_name']) print("`!Clients:`! ", i['clients']) print("`!Current RX:`! ", i['rxs']) print("`!Current TX:`! ", i['txs']) print("`!Total RX:`! ", sizeof_fmt(i['rxb'])) print("`!Total TX:`! ", sizeof_fmt(i['txb'])) hswro.footer()