tui-check: Ursache der Rahmendarstellung am Terminal ablesen

Nach der Locale-Korrektur meldet der Selbsttest UTF-8, die Anzeige blieb
aber unveraendert. Damit liegt es nicht mehr an der Serverseite, und
Weiterraten hat keinen Sinn.

"cmk-manage.sh tui-check" gibt jetzt zwei Testzeilen aus:
  Zeile A  echte UTF-8-Rahmenzeichen (U+2500 ff.)
  Zeile B  die alte VT100-Umschaltung ESC(0 mit den Buchstaben lqk
An deren Aussehen laesst sich die Ursache direkt ablesen - Terminal
ignoriert die Umschaltung (PuTTY-Fall), Terminal nicht im UTF-8-Modus,
oder Schrift ohne Rahmenzeichen. Zu jeder Beobachtung nennt die Ausgabe
die passende Abhilfe samt PuTTY-Einstellungen.

Dazu der ASCII-Schalter, der bisher ins Leere lief: einfache Rahmen kann
nur dialog zeichnen. Ist CMK_TUI_ASCII gesetzt und dialog vorhanden,
wird dialog jetzt dafuer vorgezogen; fehlt es, sagt das Skript das
ausdruecklich statt wirkungslos weiterzumachen.

dialog ist auf dieser Seite ohnehin der wirksamere Griff - es geht mit
dem Zeichensatz zuverlaessiger um als whiptail. Entsprechend in beiden
Sprachfassungen hervorgehoben.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-09-20 18:28:38 +02:00
co-authored by Claude Opus 5
parent 667c119a6c
commit 861a9bd71c
4 changed files with 157 additions and 14 deletions
+66
View File
@@ -50,6 +50,8 @@ KOMMANDOS - Stack
status Status von Containern und Sites anzeigen
logs [-f] [DIENST] Logs anzeigen
selftest Skripte auf bekannte Fallstricke pruefen
tui-check Testzeilen fuer die Rahmendarstellung ausgeben
(hilft bei q/x/l/m statt Linien, etwa in PuTTY)
shell Root-Shell im Checkmk-Container
omd ARG... beliebiges omd-Kommando im Container ausfuehren
@@ -4669,6 +4671,69 @@ Backups : $BACKUP_DIR" \
ok "Beendet."
}
# =====================================================================
# Terminal pruefen
#
# Zeigt zwei Testzeilen. Woran es liegt, laesst sich an ihnen ablesen -
# ohne Raten:
# Zeile A sind echte UTF-8-Rahmenzeichen (U+2500 ff.)
# Zeile B ist die alte VT100-Umschaltung ESC(0 mit den Buchstaben lqk
# Genau diese Buchstaben erscheinen, wenn das Terminal die Umschaltung
# nicht mitmacht - der Fall bei PuTTY im UTF-8-Modus.
# =====================================================================
cmd_tui_check() {
ui_fix_locale || true
ui_init
printf '\n%sWas dieses Terminal meldet%s\n' "$C_BLD" "$C_RST"
printf ' TERM : %s\n' "${TERM:-<leer>}"
printf ' LANG : %s\n' "${LANG:-<leer>}"
printf ' LC_ALL : %s\n' "${LC_ALL:-<leer>}"
printf ' LC_CTYPE : %s\n' "${LC_CTYPE:-<leer>}"
printf ' Zeichensatz : %s\n' "$(locale charmap 2>/dev/null || echo unbekannt)"
printf ' Programm : %s\n' "${UI_BIN:-keines (dialog/whiptail fehlt)}"
[ -n "${UI_LOCALE_NOTE:-}" ] && printf ' Angepasst : %s\n' "$UI_LOCALE_NOTE"
printf '\n%sZeile A - echte UTF-8-Rahmenzeichen%s\n' "$C_BLD" "$C_RST"
printf ' ┌────────┐\n'
printf ' │ Rahmen │\n'
printf ' └────────┘\n'
printf '\n%sZeile B - alte VT100-Umschaltung (ESC(0)%s\n' "$C_BLD" "$C_RST"
printf ' \033(0lqqqqqqqqk\033(B\n'
printf ' \033(0x\033(B Rahmen \033(0x\033(B\n'
printf ' \033(0mqqqqqqqqj\033(B\n'
cat <<EOF
${C_BLD}Auswertung${C_RST}
A zeigt Linien, B zeigt Linien
Alles in Ordnung - die Oberflaeche muss sauber aussehen.
A zeigt Linien, B zeigt lqqqk / x / mqqj
Das Terminal macht die VT100-Umschaltung nicht mit.
Genau das ist der PuTTY-Fall. Abhilfe in PuTTY:
Window -> Translation -> Remote character set: UTF-8
Window -> Translation -> Handling of line drawing characters:
"Use Unicode line drawing code points"
Connection -> Data -> Terminal-type string: xterm-256color
Auf dieser Seite hilft zusaetzlich 'dialog' statt 'whiptail':
dnf install -y dialog bzw. apt-get install -y dialog
Oder einfache Rahmen erzwingen:
CMK_TUI_ASCII=1 $SELF gui
A zeigt Kaese wie a-- oder Fragezeichen
Das Terminal laeuft NICHT im UTF-8-Modus.
In PuTTY: Window -> Translation -> Remote character set: UTF-8
Beide Zeilen zeigen Buchstaben
Schrift ohne Rahmenzeichen. In PuTTY unter
Window -> Appearance eine andere waehlen, z.B. Consolas
oder DejaVu Sans Mono.
EOF
}
# =====================================================================
# Selbstpruefung
#
@@ -4831,6 +4896,7 @@ main() {
proxy) cmd_proxy "$@" ;;
config) cmd_config "$@" || true ;;
selftest) cmd_selftest ;;
tui-check) cmd_tui_check ;;
help|-h|--help) usage ;;
*) err "Unbekanntes Kommando: $cmd"; echo; usage; exit 1 ;;
esac