Initial Go project built with Bubble Tea and Lip Gloss: - Live preview and management of /etc/update-motd.d scripts - Embedded presets (ubuntu-default, minimal, server-dashboard) - Bundled POSIX sh style scripts (brand header, sysinfo panel, footer) - Snapshot/restore safety around applying changes - CLI subcommands preview, apply, restore, list-presets - Unit tests for detect, sanitize, and apply logic
3.1 KiB
3.1 KiB
motd-assist
TUI-Tool zur Verwaltung dynamischer MOTDs auf Ubuntu/Debian (/etc/update-motd.d)
— geschrieben in Go mit Bubble Tea
und Lip Gloss.
Features
- Presets: schnell zwischen MOTD-Stilen wechseln (mitgeliefert:
ubuntu-default,minimal,server-dashboard); eigene Presets landen in~/.config/motd-assist/presets/ - Live-Vorschau: die aktivierten Scripte werden ausgeführt und farbig in der TUI angezeigt – inklusive noch nicht installierter Preset-Scripte und Breitenanpassung
- Dynamische Erkennung: welche Scripte existieren, welche aktiv sind (Executable-Bit),
ob
pam_motdkonfiguriert ist, Distro/Hostname - Gebündelte Style-Scripte: Branding-Header, Sysinfo-Panel (MEM/DISK/LOAD-Balken),
dezenter Footer – reines POSIX
sh, keine Abhängigkeiten - Sicherheiten: Script-Inhalte werden nie verändert (nur chmod/rename/install),
vor jedem Apply wird ein Snapshot geschrieben,
motd-assist restoremacht ihn rückgängig
Installation
go build -o motd-assist . # oder: go install motd-assist@latest
sudo cp motd-assist /usr/local/bin/
Bedienung (TUI)
motd-assist startet die TUI. Lesen und Vorschauen geht ohne Root; erst beim
Anwenden (a) erscheint die sudo-Passwortabfrage.
| Taste | Funktion |
|---|---|
tab / shift+tab |
zwischen Presets · Scripten · Vorschau wechseln |
j/k, ↑/↓ |
auswählen |
enter / space |
Preset laden · Script an/aus |
u / d |
Script in der MOTD-Reihenfolge nach oben/unten |
a |
Änderungen anwenden (sudo) |
esc |
ausstehende Änderungen verwerfen |
s |
aktuellen Zustand als Preset speichern |
D |
ausgewähltes Preset löschen (nur eigene) |
r |
Systemzustand neu einlesen |
? |
Hilfe · q beenden |
CLI
motd-assist preview [-w 72] # aktuellen MOTD rendern und ausgeben
motd-assist list # Scripte + Zustand anzeigen
motd-assist presets # verfügbare Presets auflisten
motd-assist apply <preset> # Preset anwenden (fragt ggf. sudo-Passwort)
motd-assist restore # letzten Apply zurücksetzen
Preset-Format (JSON)
{
"name": "mein-preset",
"description": "Kurze Beschreibung",
"scripts": [
{ "name": "00-header", "enabled": false },
{ "name": "10-brand-header", "enabled": true, "install": "brand-header" },
{ "name": "95-footer", "enabled": true, "install": "footer" }
]
}
Die Array-Reihenfolge bestimmt die MOTD-Reihenfolge. Nicht gelistete System-Scripte
bleiben unverändert; nicht mehr benötigte gebündelte Scripte werden beim Preset-Wechsel
entfernt. install referenziert eine gebündelte Vorlage (brand-header,
sysinfo-panel, footer).
Entwicklung
go test ./... # Unit-Tests (Logik plattformneutral)
MOTD_ASSIST_ROOT=<dir> go run . # gegen ein Test-Root laufen lassen
Das Tool zielt auf Linux; Windows-Builds kompilieren, haben aber kein Executable-Bit-Konzept (alles Lesen/Planen funktioniert, Ausführen der Scripte nicht).