Kritischen poe.sh-Pfadbug beheben + verschachteltes <form> in Wartung fixen
- KRITISCH: usr/local/bin/custom/poe.sh wurde bei der TESM-Umbenennung
übersehen und zeigte weiterhin komplett auf die alten Pfade
(/srv/poe_manager/sqlite.db, /srv/poe_manager/generate_ips.py,
/var/log/poe-manager) -- der Ping-Check/PoE-Neustart-Loop
(tesm-check.service) lief dadurch seit dem Umzug nur noch auf Fehler
("No such file or directory"), das Live-Log stand seit gestern 19 Uhr
still und automatische PoE-Neustarts bei Geräteausfall liefen die
ganze Zeit ins Leere. Auf POETEST live behoben und verifiziert: Log
schreibt wieder frische Einträge, Checks laufen wieder durch.
- Wartung: "Update starten" nahm live IMMER zusätzlich das erste Gerät
mit, auch ganz ohne angehakte Checkbox. Ursache: der "Neustart"-Button
jeder Zeile saß in einem eigenen <form>, das INNERHALB des großen
#updateForm verschachtelt war -- ungültiges HTML, wodurch Browser das
äußere Formular vorzeitig schließen/aufspalten. Behoben, indem jedes
Neustart-<form> jetzt außerhalb von #updateForm steht und der Button
es nur per form="reboot-<mac>" referenziert. Live verifiziert: ein
gezielt einzeln ausgewähltes Gerät startet jetzt ausschließlich sich
selbst, keine leere Auswahl mehr möglich.
- Zusätzlich defensiv: Checkboxen werden beim Laden der Wartungsseite
jetzt explizit zurückgesetzt (manche Browser stellen den
Checked-Zustand nach einem Redirect/Reload sonst aus dem Verlauf
wieder her).
- Restliche "poe"-Relikte aus der TESM-Umbenennung bereinigt: Export-
Dateiname (poe_manager_export_… → tesm_export_…), Kommentare
(poe_web.service → tesm.service) sowie ein für den Nutzer sichtbarer
Hinweistext in Systemeinstellungen (rpi-check.service → tesm-check.service).
This commit is contained in:
@@ -7,12 +7,12 @@
|
||||
# ============================================================================
|
||||
|
||||
# Eine einzige, durchgehend fortgeschriebene Datei statt vorher bei jedem
|
||||
# (auch täglich per rpi-check-restart.timer automatisch ausgelösten)
|
||||
# (auch täglich per tesm-check-restart.timer automatisch ausgelösten)
|
||||
# Dienst-Neustart ein neues rpi-<timestamp>.log -- Rotation/Aufbewahrung
|
||||
# übernimmt jetzt zentral logrotate (siehe app.py: _write_logrotate_config,
|
||||
# einstellbar unter Systemeinstellungen → Logs), nicht mehr dieses Skript
|
||||
# selbst. Pfad muss mit POE_LOG_DIR/live.log in app.py übereinstimmen.
|
||||
LOG_DIR="/var/log/poe-manager"
|
||||
# selbst. Pfad muss mit TESM_LOG_DIR/live.log in app.py übereinstimmen.
|
||||
LOG_DIR="/var/log/tesm"
|
||||
LOGFILE="$LOG_DIR/live.log"
|
||||
mkdir -p "$LOG_DIR"
|
||||
touch "$LOGFILE"
|
||||
@@ -20,7 +20,7 @@ touch "$LOGFILE"
|
||||
# Intervall aus DB abrufen
|
||||
SLEEP=$(python3 - <<'END'
|
||||
import sqlite3
|
||||
conn = sqlite3.connect("/srv/poe_manager/sqlite.db")
|
||||
conn = sqlite3.connect("/srv/tesm/sqlite.db")
|
||||
row = conn.execute("SELECT value FROM settings WHERE key='check_interval'").fetchone()
|
||||
conn.close()
|
||||
print(row[0] if row else 300)
|
||||
@@ -164,7 +164,7 @@ function check_device() {
|
||||
|
||||
function manual_restart() {
|
||||
local target_mac="$1"
|
||||
python3 /srv/poe_manager/generate_ips.py | while IFS='|' read -r rpi_ip dev_name switch_ip switch_ssh_port switch_hostname switch_port switch_user switch_pass mac; do
|
||||
python3 /srv/tesm/generate_ips.py | while IFS='|' read -r rpi_ip dev_name switch_ip switch_ssh_port switch_hostname switch_port switch_user switch_pass mac; do
|
||||
if [[ "$mac" != "$target_mac" ]]; then
|
||||
continue
|
||||
fi
|
||||
@@ -213,7 +213,7 @@ while true; do
|
||||
# Subshell, deren Hintergrund-Jobs von außen nicht mehr sichtbar wären).
|
||||
while IFS='|' read -r rpi_ip dev_name switch_ip switch_ssh_port switch_hostname switch_port switch_user switch_pass mac; do
|
||||
check_device "$rpi_ip" "$dev_name" "$switch_ip" "$switch_ssh_port" "$switch_hostname" "$switch_port" "$switch_user" "$switch_pass" &
|
||||
done < <(python3 /srv/poe_manager/generate_ips.py)
|
||||
done < <(python3 /srv/tesm/generate_ips.py)
|
||||
|
||||
# Auf alle in diesem Durchlauf gestarteten Geräte-Checks warten, bevor
|
||||
# das Intervall abgewartet wird -- sonst könnten sich Durchläufe
|
||||
|
||||
Reference in New Issue
Block a user