Version 2.8.45: Auslesezeile fuer den Client

This commit is contained in:
alientim committed 2026-09-17 11:28:06 +02:00
1 parent 29b62714cb
commit 41a65f5aa8
3 files changed
+31 -1

No files matched your search

+1 -1
View File
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
[project] [project]
name = "tesm" name = "tesm"
version = "2.8.44" version = "2.8.45"
description = "TESM -- Verwaltung und Ueberwachung von PoE-Endgeraeten und Aruba-Switchen" description = "TESM -- Verwaltung und Ueberwachung von PoE-Endgeraeten und Aruba-Switchen"
requires-python = ">=3.11" requires-python = ">=3.11"
dependencies = [ dependencies = [
+23
View File
@@ -903,10 +903,33 @@ def client_konfiguration(conn: sqlite3.Connection, stil: str) -> dict[str, Any]:
"inhalt": inhalt, "inhalt": inhalt,
"nachher": nachher, "nachher": nachher,
"skript": _uebernahme_skript(stil, inhalt), "skript": _uebernahme_skript(stil, inhalt),
"auslesen": _auslesen(stil, codes),
"optionen": optionen, "optionen": optionen,
} }
def _auslesen(stil: str, codes: list[int]) -> str:
"""Wie der Wert auf dem Client wieder herauskommt.
Gehoert dazu, weil "angekommen" sonst niemand pruefen kann -- und weil ein
RMM-Agent genau diese Zeile braucht. Bei systemd-networkd steht der Wert
**hexkodiert** in der Lease: systemd kennt fremde Optionen nicht und legt
sie roh ab. Ohne das Umrechnen liest man 687474703a... und haelt es fuer
Unsinn.
"""
if not codes:
return ""
code = codes[0]
if stil == "networkd":
return (
"lease=/run/systemd/netif/leases/$(cat /sys/class/net/$IF/ifindex); "
f"/usr/bin/printf \"$(sed -n 's/^OPTION_{code}=//p' \"$lease\" | sed 's/../\\\\x&/g')\""
)
if stil == "dhcpcd":
return "dhcpcd -U $IF | grep -i '^url='"
return "grep -i 'option url' /var/lib/dhcp/dhclient.leases | tail -n1"
def _uebernahme_skript(stil: str, inhalt: str) -> str: def _uebernahme_skript(stil: str, inhalt: str) -> str:
"""Das Skript, das die Konfiguration auf dem Client eintraegt. """Das Skript, das die Konfiguration auf dem Client eintraegt.
@@ -445,6 +445,13 @@
</div> </div>
<pre class="code-block code-block--wrap" id="konfig-{{ stil }}">{{ konfig.inhalt }}</pre> <pre class="code-block code-block--wrap" id="konfig-{{ stil }}">{{ konfig.inhalt }}</pre>
<div class="fs-xs faint">Danach: <code>{{ konfig.nachher }}</code></div> <div class="fs-xs faint">Danach: <code>{{ konfig.nachher }}</code></div>
{% if konfig.auslesen %}
{# Ohne diese Zeile kann niemand pruefen, ob es angekommen ist --
und ein RMM-Agent braucht genau sie. #}
<div class="fs-xs faint">
Auslesen auf dem Client: <code class="break-all">{{ konfig.auslesen }}</code>
</div>
{% endif %}
{% if current_user.has('servicing_command.execute') %} {% if current_user.has('servicing_command.execute') %}
<form method="post" action="{{ url_for('dhcp.push_client_config') }}"> <form method="post" action="{{ url_for('dhcp.push_client_config') }}">