HTML-Scrapen der Drucker-Statusseite ist fragil (grosse Seite, Werte teils in JS/Grafik). SNMP/Printer-MIB liefert die Fuellstaende als saubere Zahlen. - Dockerfile: net-snmp-CLI (Paket 'snmp') installiert. - satellite.py: Aktionen snmp.get / snmp.walk (generisch, params ip+oid) und snmp.printer (Komfort: liest prtMarkerSupplies aus der Printer-MIB und rechnet je Patrone name+level+max+percent). net-snmp via subprocess, numerische OIDs (keine MIB-Files noetig), -t2 -r1 + Timeout = schnell scheitern statt haengen. RFC-Sonderwerte (-1/-2 unbekannt, -3 vorhanden) behandelt. - CONTROL_ALLOWLIST-Default + .env.example um snmp.* erweitert, SNMP_*-Envs dokumentiert. - agent.py + seed_rules.py: satellite_command-Tool + Drucker-Beispiel — snmp. printer ist jetzt der BEVORZUGTE Weg fuer Tinte, http.get nur Fallback. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
20 lines
629 B
Docker
20 lines
629 B
Docker
# ARIA Satellit — schlanker Aussenposten-Container.
|
|
# Laeuft mit network_mode: host (siehe docker-compose.yml), damit mDNS/SSDP-
|
|
# Broadcasts + die Geraete-IPs im lokalen Netz erreichbar sind.
|
|
FROM python:3.12-slim
|
|
|
|
WORKDIR /app
|
|
|
|
# net-snmp-CLI (snmpget/snmpwalk) fuer die snmp.*-Aktionen — z.B. Drucker-
|
|
# Tintenstaende zuverlaessig aus der Printer-MIB statt HTML zu scrapen.
|
|
RUN apt-get update \
|
|
&& apt-get install -y --no-install-recommends snmp \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
COPY requirements.txt .
|
|
RUN pip install --no-cache-dir -r requirements.txt
|
|
|
|
COPY satellite.py .
|
|
|
|
CMD ["python", "-u", "satellite.py"]
|