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:
@@ -1830,15 +1830,46 @@ Damit es auch auf der Gegenseite passt:
|
||||
Wer die Sitzung dauerhaft so haben möchte, speichert sie in PuTTY unter
|
||||
*Session → Saved Sessions*.
|
||||
|
||||
> Hilft beides nicht – etwa weil auf dem Server keine UTF-8-Locale
|
||||
> installiert werden darf – lässt sich die Oberfläche mit einfachen
|
||||
> ASCII-Rahmen zeichnen:
|
||||
#### Wenn es trotzdem nicht passt: nachsehen statt raten
|
||||
|
||||
```bash
|
||||
./scripts/cmk-manage.sh tui-check
|
||||
```
|
||||
|
||||
Das gibt zwei Testzeilen aus:
|
||||
|
||||
* **Zeile A** – echte UTF-8-Rahmenzeichen (`┌──┐`)
|
||||
* **Zeile B** – die alte VT100-Umschaltung `ESC(0` mit den Buchstaben `lqk`
|
||||
|
||||
Daran lässt sich die Ursache ablesen:
|
||||
|
||||
| Beobachtung | Bedeutung |
|
||||
|---|---|
|
||||
| A Linien, B Linien | alles in Ordnung |
|
||||
| A Linien, **B zeigt `lqqqk`** | das Terminal macht die VT100-Umschaltung nicht mit – **der PuTTY-Fall**, siehe Einstellungen oben |
|
||||
| A zeigt Kauderwelsch | das Terminal läuft nicht im UTF-8-Modus |
|
||||
| beide zeigen Buchstaben | die Schrift hat keine Rahmenzeichen |
|
||||
|
||||
Das Kommando nennt zu jeder Beobachtung gleich die passende Abhilfe.
|
||||
|
||||
> **`dialog` statt `whiptail` installieren** ist auf dieser Seite der wirksamste
|
||||
> Griff – es geht mit dem Zeichensatz zuverlässiger um und kann als einziges
|
||||
> auch einfache ASCII-Rahmen:
|
||||
>
|
||||
> ```bash
|
||||
> sudo dnf install -y dialog # RHEL/Rocky/Alma
|
||||
> sudo apt-get install -y dialog # Debian/Ubuntu
|
||||
> ```
|
||||
>
|
||||
> Das Skript bevorzugt `dialog`, sobald es vorhanden ist. Danach lassen sich
|
||||
> notfalls einfache Rahmen erzwingen:
|
||||
>
|
||||
> ```bash
|
||||
> CMK_TUI_ASCII=1 ./scripts/cmk-manage.sh gui
|
||||
> ```
|
||||
>
|
||||
> Das wirkt allerdings nur mit `dialog`; `whiptail` kennt keine solche Option.
|
||||
> Ohne `dialog` sagt das Skript das ausdrücklich – `whiptail` kennt keine
|
||||
> solche Option.
|
||||
|
||||
### 14.5 Selbstprüfung
|
||||
|
||||
|
||||
+35
-3
@@ -1830,14 +1830,46 @@ So that the other end matches:
|
||||
|
||||
Save the session under *Session → Saved Sessions* to keep these settings.
|
||||
|
||||
> If neither helps – for instance because no UTF-8 locale may be installed on
|
||||
> the server – the interface can be drawn with plain ASCII borders:
|
||||
#### If it still looks wrong: look instead of guessing
|
||||
|
||||
```bash
|
||||
./scripts/cmk-manage.sh tui-check
|
||||
```
|
||||
|
||||
This prints two test lines:
|
||||
|
||||
* **Line A** – real UTF-8 box-drawing characters (`┌──┐`)
|
||||
* **Line B** – the old VT100 switch `ESC(0` with the letters `lqk`
|
||||
|
||||
The cause can be read off them:
|
||||
|
||||
| Observation | Meaning |
|
||||
|---|---|
|
||||
| A lines, B lines | everything is fine |
|
||||
| A lines, **B shows `lqqqk`** | the terminal ignores the VT100 switch – **the PuTTY case**, see the settings above |
|
||||
| A shows gibberish | the terminal is not in UTF-8 mode |
|
||||
| both show letters | the font has no box-drawing glyphs |
|
||||
|
||||
The command names the matching remedy for each observation.
|
||||
|
||||
> **Installing `dialog` instead of `whiptail`** is the most effective move on
|
||||
> this side – it handles the character set more reliably and is the only one
|
||||
> that can draw plain ASCII borders:
|
||||
>
|
||||
> ```bash
|
||||
> sudo dnf install -y dialog # RHEL/Rocky/Alma
|
||||
> sudo apt-get install -y dialog # Debian/Ubuntu
|
||||
> ```
|
||||
>
|
||||
> The script prefers `dialog` as soon as it is present. After that, plain
|
||||
> borders can be forced if needed:
|
||||
>
|
||||
> ```bash
|
||||
> CMK_TUI_ASCII=1 ./scripts/cmk-manage.sh gui
|
||||
> ```
|
||||
>
|
||||
> This only works with `dialog`; `whiptail` has no such option.
|
||||
> Without `dialog` the script says so explicitly – `whiptail` has no such
|
||||
> option.
|
||||
|
||||
### 14.5 Self-check
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
+21
-7
@@ -338,24 +338,38 @@ ui_ascii_args() {
|
||||
case "${CMK_TUI_ASCII:-}${UI_ASCII:-}" in
|
||||
'') return 0 ;;
|
||||
esac
|
||||
# Nur dialog kann das; whiptail kennt die Option nicht.
|
||||
if [ "${UI_BIN:-}" = dialog ] && dialog --ascii-lines --print-version >/dev/null 2>&1; then
|
||||
UI_EXTRA=(--ascii-lines)
|
||||
elif [ -z "${UI_ASCII_WARNED:-}" ]; then
|
||||
UI_ASCII_WARNED=1
|
||||
warn "Einfache Rahmen kann nur 'dialog' zeichnen - 'whiptail' kennt
|
||||
die Option nicht. Installieren mit:
|
||||
dnf install -y dialog (RHEL/Rocky/Alma)
|
||||
apt-get install -y dialog (Debian/Ubuntu)"
|
||||
fi
|
||||
return 0
|
||||
}
|
||||
|
||||
ui_init() {
|
||||
ui_fix_locale || true
|
||||
ui_ascii_args
|
||||
|
||||
# Geometrie IMMER setzen - sonst laeuft das Skript unter "set -u" auf
|
||||
# eine unbound variable, wenn UI_BIN von aussen vorgegeben wurde.
|
||||
UI_H="${UI_H:-22}"; UI_W="${UI_W:-78}"; UI_MH="${UI_MH:-13}"
|
||||
[ -n "${UI_BIN:-}" ] && return 0
|
||||
if command -v dialog >/dev/null 2>&1; then UI_BIN=dialog
|
||||
elif command -v whiptail >/dev/null 2>&1; then UI_BIN=whiptail
|
||||
else UI_BIN=""; fi
|
||||
export DIALOGRC="${DIALOGRC:-}"
|
||||
|
||||
if [ -z "${UI_BIN:-}" ]; then
|
||||
if command -v dialog >/dev/null 2>&1; then UI_BIN=dialog
|
||||
elif command -v whiptail >/dev/null 2>&1; then UI_BIN=whiptail
|
||||
else UI_BIN=""; fi
|
||||
export DIALOGRC="${DIALOGRC:-}"
|
||||
fi
|
||||
|
||||
# Einfache Rahmen koennen nur mit dialog gezeichnet werden. Ist das
|
||||
# gewuenscht und dialog vorhanden, wird es dafuer vorgezogen.
|
||||
if [ -n "${CMK_TUI_ASCII:-}${UI_ASCII:-}" ] && command -v dialog >/dev/null 2>&1; then
|
||||
UI_BIN=dialog
|
||||
fi
|
||||
ui_ascii_args
|
||||
}
|
||||
|
||||
ui_available() { ui_init; [ -n "$UI_BIN" ]; }
|
||||
|
||||
Reference in New Issue
Block a user